爲了讓我們的網站更加安全,防止運營商注入廣告,防止用戶信息外泄,https已經逐漸變得大衆化。
雖然有些ssl證書提供商需要收費,他們往往都是面對多個域名的情況下,如果只是單個域名,使用免費的let’s Encrypt也能將我們網站支持https。
生成SSL證書
1、 下載安裝let’s encrypt
sudo apt-get install letsencrypt
2、是有webroot插件,自動生成證書
letsencrypt certonly --webroot -w /var/www/example -d example.com
# 注意 /var/www/example 是你網址的根目錄,域名可以能直接訪問到的
原理是在 /var/www/example 目錄下創建臨時文件 .well-known/acme-challenge ,通過這個文件來證明對域名 example.com 的控制權,然後 Let’s Encrypt 驗證服務器發出 HTTP 請求,驗證每個請求的域的 DNS 解析,驗證成功即頒發證書。(這裏默認/var/www/example爲網站根目錄,請酌情修改)
生成的 pem 和 key 在 /etc/letsencrypt/live/ 目錄下。其中 fullchain.pem
是接下來要用到的 ssl_certificate
,privkey.pem
是 ssl_certificate_key
,
3、 開啓apache中SSL模塊
a2enmod ssl
4、配置apache文件
可以新建一個新的conf專門來監聽https的443端口,然後添加上
<VirtualHost *:443>
······
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
······
</VirtualHost>
添加完
a2ensite XXXX
service apache2 restart
4、 騰訊雲開放443端口
安全組添加443端口的訪問權限
這時候訪問我們的https://的網站,就能正常訪問了。
5、 添加自動跳轉
完成https://的訪問之後,我們希望能夠實現訪問http網站的時候,能夠自動跳轉到我們https的網站對應頁面,這個是怎麼實現的呢?只要在apache中配置晚間中,需要一些配置
方法一
Redirect permanent / https://www.example.com/
方法二
在Apache配置文件編輯網站虛擬主機,並添加以下設置。您也可以在.htaccess文件中添加在你的網站上的文檔根目錄相同的設置。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
如果您想具體URL重定向到HTTPS。使用以下設置。例如,如果有人試圖訪問always-secure.html這個頁面會跳轉到 https 的頁面。用戶必須有SSL訪問的URL。
RewriteEngine On
RewriteRule ^always-secure.html$ https://www.example.com/always-secure.html [R=301,L]
OK,這樣就完成了ubuntu中項目配置的各種問題了。
最後如果需要優化ssl證書,參考網站配置