Apache服務器配置SSL證書時,遇到了一些問題,特意記錄下。本屌騰訊雲服務器
配置過程:
①在騰訊雲給域名簽發了SSL證書後,需要將其下載到本地。
解壓證書文件夾找到Apache文件夾,可以看到三個文件,將其副本到服務器Apache根目錄的conf文件夾裏的ssl文件夾中。
②打開apache安裝目錄下conf目錄中的httpd.conf文件,找到以下內容並去掉“#”
#LoadModule ssl_module modules/mod_ssl.so (如果找不到請確認是否編譯過 openssl 插件)
#Include conf/extra/httpd-ssl.conf(刪除行首的配置語句註釋符號“#”,保存後退出)
③打開apache安裝目錄下conf / extra / httpd-ssl.conf文件,進行以下配置:
Listen 443
<VirtualHost *:443>
DocumentRoot "C:/phpstudy/PHPTutorial/WWW"
ServerName www.youdomain.cn
ServerAlias youdomain.cn
SSLEngine on
SSLProtocol TLSv1 TLSv1.1 TLSv1.2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile "C:/phpstudy/Apache/PHPTutorial/conf/2_www.youdomain.cn.crt"
SSLCertificateKeyFile "C:/phpstudy/PHPTutorial/Apache/conf/3_www.youdomain.cn.key"
SSLCertificateChainFile "C:/phpstudy/PHPTutorial/Apache/conf/1_root_bundle.crt"
<Directory "C:/phpstudy/PHPTutorial/WWW/>
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
中途遇到的坑:
當取消掉包括開始的#時,會發現Apache服務器將無法正常啓動,查閱博客帖子後,有大佬說可能是httpd-ssl.conf文件不正確導致的,打開Apache根目錄下的bin目錄,找到httpd.exe工具對httpd-ssl.conf文件進行校正
運行校驗,發現Apache自帶的httpd-ssl.conf配置文件就是錯的,需要自行調整路徑
調試配置路徑直到不報錯,將系統替換證書名稱替換成自己的證書名稱,啓動Apache服務器,SSL證書配置完成,外網可以通過https正常訪問。
————————————————
另外如果遇到如下錯誤,報錯的地方屏蔽掉Listen 443,重新運行httpd.exe,沒有錯誤了重啓apache服務,輸入域名小鎖就加上了。點我查看實驗結果
——————————————————————————
還有一個問題記錄下,當我輸入www.xxxx.com(我的域名),不會使用https鏈接, 直接用http打開了,這個是http重定向的問題。查了下以下是解決方法:
最後,解決方案是在 VirtualHost 節點裏,添加如下配置:
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
完整配置參數如下:
<VirtualHost *:80>
ServerName www.simbanet.cn
ServerAlias other.simbanet.cn
DocumentRoot "C:\wwwroot\mysite4"
# ErrorLog "logs\simbanet.com_error_apache.log"
# CustomLog "logs\simbanet.com_error_apache.log" common
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
<Directory "C:\wwwroot\mysite4">
Options Indexes FollowSymlinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
這樣,對應使用域名訪問的時候就會自動跳轉到 https 。