
我已經在 RHEL 6 中安裝了 apache。需要進行哪些變更和配置才能使用 https://本地主機:443/。
如果我將“Listen 80”更改為 443,則會引發 SSL 連線錯誤
“錯誤 107 (net::ERR_SSL_PROTOCOL_ERROR):SSL 協定錯誤。”
答案1
如果您使用的是apache2
,那麼您必須執行以下操作:
步驟1:使用 OpenSSL 產生用於保護您的網站的金鑰。這些金鑰在加密和解密到您的安全網站的流量時使用。
$ openssl genrsa -out mydomain.key 1024
此命令將建立一個 1024 位元私鑰並將其放入檔案 mydomain.key 中。
第2步:產生您自己的證書。
$ openssl req -new -key mydomain.key -x509 -out mydomain.crt
步驟3:將私鑰保存在該目錄中/etc/apache2/ssl.key/
,將憑證保存在該目錄中/etc/apache2/ssl.crt/
。
筆記:該ssl.key
目錄必須只能由 root 讀取。
步驟4:現在您需要httpd.conf
編輯/etc/apache2
.
現在這個文件應該包含這樣的內容:
NameVirtualHost *:80
NameVirtualHost *:443
Listen 443
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain
ServerName www.mydomain.com
ServerAlias mydomain.com
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain-secure
ServerName mail.mydomain.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/mydomain.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/mydomain.key
</VirtualHost>
<Directory /srv/www/htdocs/mydomain-secure>
SSLRequireSSL
</Directory>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain
ServerName mail.mydomain.com
RedirectMatch permanent (/.*) https://mail.mydomain.com$1
</VirtualHost>
答案2
不要更改Listen 80
為443
in /etc/httpd/conf/httpd.conf
. SSL 在 中設定/etc/httpd/conf.d/ssl.conf
。在 RHEL 6 上,SSL 已啟用並預設使用自簽名憑證進行偵聽。
您只需瀏覽即可使用 SSL 存取預設網站https://localhost
(無需將連接埠新增至 URL 末端)。
如果您想將所有 HTTP 請求轉送到 HTTPS(我相信您正在嘗試實現這一目標),您可以新增永久重新導向,或使用 Apache 模組mod_rewrite
。
最簡單、最安全的方法是設定永久重定向。啟用命名虛擬主機並在Redirect
中的 VirtualHost 中新增指令/etc/httpd/conf/httpd.conf
。
NameVirtualHost *:80
<VirtualHost *:80>
ServerName localhost
Redirect permanent / https://localhost
</VirtualHost>
使用mod_rewrite
,您也可以建立一個命名虛擬主機。這不是推薦的方法,但會起作用。
NameVirtualHost *:80
<VirtualHost *:80>
# Enable the Rewrite engine
RewriteEngine On
# Make sure the connection is not already HTTPS
RewriteCond %{HTTPS} !=on
# This rewrites the URL and forwards to https
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
如果您想關閉 SSL,請註解掉這些行/etc/httpd/conf.d/ssl.conf
並重新啟動 Apache。
LoadModule ssl_module modules/mod_ssl.so
Listen 443