2017-07-25 67 views
1

我有以下問題:在apache中使用mono與ssl

我想通過ssl訪問單聲道應用程序。我希望它沒有ssl就無法訪問。

我使用apache2.4和MOD-單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> 
+0

什麼版本的Mono? – mikep

+0

我更新了問題 –

回答

0

我用單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 

沒有該節奇怪的錯誤出現。

+0

如果我把目錄放在mod_mono.conf文件中,我有問題,應用程序仍然可以訪問沒有ssl - 我想它只能通過ssl訪問。 我的問題的措辭有點不好,我更新了它。 –

+0

對於舊版本的Mono,您可以簡單地在前面添加一個反向代理服務器,並將所有非HTTPS流量重定向到HTTPS。 –