在 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 的单声道的主要内容,如果未能解决你的问题,请参考以下文章