申請證書
可以從freessl.cn免費申請。免費的SSL證書時間長度爲1年,但是隻能對單個域名,不支持多域名通配符,選擇的話以個人需求爲準。
選擇瀏覽器生成
點擊確認創建後,得到如下信息:
接下來到域名管理裏面,按上述信息配置域名的信息,可以參考上面的驗證配置指南,如下:
配置完了之後,不一定會立馬生效,取決於配置改解析項的TTL。
apache配置
- 將容器裏面的443端口映射到宿主機的443端口。如果已啓動了容器,可能需要重新創建。
- 將申請好的證書和私鑰上傳到宿主機中,並將其掛載到容器中。
docker run --name wp \
-p 80:80 \
-p 443:443 \
-e WORDPRESS_DB_HOST=host \
-e WORDPRESS_DB_USER=user \
-e WORDPRESS_DB_PASSWORD="" \
-v /root/wordpress:/var/www/html \
-v /root/ssl:/ssl \
-d wordpress
- 先進入容器中
docker container exec -it wp bash
- 加載apache的ssl模塊
a2enmod ssl
- 修改證書和私鑰路徑
vim /etc/apache2/sites-available/default-ssl.conf
找到SSLCertificateFile
和SSLCertificateKeyFile
這兩個配置項,改成把私鑰和證書掛載進容器裏面後的路徑,這裏都在/ssl/
目錄下。修改後爲:
- 讓ssl配置被apache加載
ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf
-
退出容器,並重啓容器。
docker container restart wp
-
強制http請求轉到https
編輯/etc/apache2/sites-available/000-default.conf
,找到<VirtualHost *:80> </VirtualHost>
標籤中增加下面的配置:
<Directory "/var/www/html">
RewriteEngine on
RewriteBase /
# FORCE HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</Directory>
如下:
- 退出容器,並重啓容器。
docker container restart wp
檢驗
如果不能訪問,可以往如下兩方面考慮:
- 查看容器的日誌,看報什麼錯誤信息:
docker container logs -f wp
- 看宿主機的443端口是否開放
參考:
https://blog.csdn.net/yori_chen/article/details/88577249