在 apache 中使用带有 ssl 的单声道

Posted

技术标签:

【中文标题】在 apache 中使用带有 ssl 的单声道【英文标题】:Using mono with ssl in apache 【发布时间】:2017-12-31 13:04:37 【问题描述】:

我有以下问题:

我想通过 ssl 访问单声道应用程序。我希望没有 ssl 就无法访问它。

我正在使用 apache2.4 和 mod-mono-server4.exe 3.0.0.0

目前我有这样的工作配置:

<VirtualHost *:80>

    DocumentRoot /srv/www/htdocs/my-mono-app

    #SSLEngine on
    #SSLCertificateFile   /path/to/key.pem
    #SSLCertificateKeyFile /path/to/key.pem

    MonoAutoApplication disabled

    MonoServerPath my-mono-app "/usr/bin/mod-mono-server4"

    MonoApplications my-mono-app "/my-mono-app:/srv/www/htdocs/my-mono-app"

    <Directory /srv/www/htdocs/my-mono-app>
        Require all granted
        MonoSetServerAlias my-mono-app
        SetHandler mono
    </Directory>
</VirtualHost>

但是一旦我打开 SSLEngine 并将端口更改为 443,它就不再工作了。它只是说:Object not found! 如果我导航到该地址。

它不会在日志中记录任何错误。

你能帮我解决这个问题吗?

PS:这是完整的不工作配置:

<VirtualHost *:443>

    DocumentRoot /srv/www/htdocs/my-mono-app

    SSLEngine on
    SSLCertificateFile   /path/to/key.pem
    SSLCertificateKeyFile /path/to/key.pem

    MonoAutoApplication disabled

    MonoServerPath my-mono-app "/usr/bin/mod-mono-server4"

    MonoApplications my-mono-app "/my-mono-app:/srv/www/htdocs/my-mono-app"

    <Directory /srv/www/htdocs/my-mono-app>
        Require all granted
        MonoSetServerAlias my-mono-app
        SetHandler mono
    </Directory>
</VirtualHost>

【问题讨论】:

什么版本的 Mono? 我更新了问题 【参考方案1】:

我曾经使用过单声道 5.x。根据我的回忆,mod_mono.conf 需要修改目录路径。我从 Apache 访问和错误日​​志中找到了该解决方案。在搜索整个地球之前,我尝试了很多方法 - 符号链接、清除安装和从源代码构建等。你可以尝试我的方法来保留 mod_mono.conf 的备份。

<IfModule !mono_module>
    LoadModule mono_module "libexec/apache2/mod_mono.so"
</IfModule>

<IfModule mono_module>
    AddType application/x-asp-net .config .cs .csproj .dll .resources .resx .sln .vb .vbproj
    AddType application/x-asp-net .asax .ascx .ashx .asmx .aspx .axd .browser .licx .master .rem .sitemap .skin .soap .webinfo

    MonoAutoApplication enabled
    MonoDebug true
    MonoServerPath "/usr/bin/mod-mono-server4"
    MonoSetEnv LANG=fr_FR.UTF-8
    MonoUnixSocket "/tmp/.mod_mono"

    <IfModule dir_module>
        DirectoryIndex Default.aspx
    </IfModule>

    <DirectoryMatch "/(bin|App_Code|App_Data|App_GlobalResources|App_LocalResources)/">
        Order deny,allow
        Deny from all
    </DirectoryMatch>

    <Location "/my-mono-app">
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1 ::1
        SetHandler mono-ctrl
    </Location>
</IfModule>

写评论太大了,可能不是100%有保证的答案,取决于您的尝试。您的配置中的那件事是正确的:

Require all granted
MonoSetServerAlias my-mono-app
SetHandler mono

没有那节奇怪的错误就会出现。

【讨论】:

如果我将目录放在 mod_mono.conf 文件中,我的问题是应用程序在没有 ssl 的情况下仍然可以访问 - 我希望它只能通过 ssl 访问。我的问题中的措辞有点糟糕,我更新了它。 对于旧版本的Mono,您只需在前面添加一个反向代理服务器,并将所有非HTTPS流量重定向到HTTPS。

以上是关于在 apache 中使用带有 ssl 的单声道的主要内容,如果未能解决你的问题,请参考以下文章

如何使用弹簧反应 webflux 中的单声道和助焊剂使用 DTO 制作新的单声道

如何使用嵌入在 C++ 中的单声道编译 C# 代码?

windows上没有单声道的单声道sqlite?

如何将我的单声道程序添加到启动中?

在Javascript中将立体声音频转换为单声道

Mac OS X 上的单声道调整终端大小