我的博客http轉https

  搭建我的博客的時候,就看過一些免費證書申請的文章,也瀏覽過一些使用Https的博客。使用Https要比Http安全不少,至少在國內很普通的流量劫持***會減小不少。閒來無事,測試把本身的我的博客也升級到Https。php

  使用Https加密首先就須要申請我的博客證書,收費的證書頒發機構國內和國外都有不少。我的博客推薦使用如今比較流行的Let's Encrypt。申請過程比較簡單,使用官方自動化腳本:html

一、配置git環境:# yum install gitnginx

二、下載自動化腳本到本地git

# git clone https://github.com/certbot/certbot github

# cd certbot數據庫

三、生成證書vim

./certbot-auto certonly --standalone --email loryxxx@hotmail.com -d iorisun.com -d www.iorisun.com 安全

wKiom1lbCyiyAPPEAAEJw2vg_Q4085.jpg

將安裝如下軟件包bash

wKiom1lbC1zha2-9AACOj719T3A383.jpg

安裝過程,須要手動確認是否安裝,輸入Y確認。另外還須要接受官方協議,輸入A回車便可。session

注意:申請時,防火牆須要開通https端口

# firewall-cmd --permanent --zone=public --add-service=https 

# firewall-cmd --reload

申請成功後,有如下提示:

wKiom1lbDxCTGYtKAAB2LMq11s0658.jpg

可經過tree命令查看:# tree /etc/letsencrypt/live/

wKiom1lbEFXyG-DwAABORTvp_1k863.jpg

四、修改nginx配置文件

# vim /etc/nginx/conf.d/default.conf 

在Nginx配置文件中加入SSL參數定義,把http重定向到https

以下:修改和增長如下內容(爲避免升級nginx後主頁被修改,最好把index.php放在首位)

wKiom1lbVoTAW3yyAABaVJvvTig874.jpg

重啓服務後,再打開網站就能夠看到綠色的小鎖了。

wKioL1lbVkOAwDgEAAAO8MdVwp0808.jpg

五、設置證書自動延期

Let's Encrypt的證書有效期只有90天,須要按期更新證書:

經過crontab制定一個計劃任務,每2個月(即一、三、五、七、九、11月15日凌晨2點0分)更新一次。

0 2 15 */2 * root /root/certbot/certbot-auto renew --standalone --pre-hook "service nginx stop" --post-hook "service nginx start" --force-renewal

或者使用./certbot-auto renew -v命令也能夠(注:要先關閉nginx服務再運行,不然會報錯)。

六、修改博客站點地址

wKioL1lbVzuBEizwAAA1j3qNceQ145.jpg

注意:須要同步修改圖片地址http爲https(如修改數據庫等)


優化Https安全性

一、生成dhparam.pem

# cd /etc/ssl/certs/

# openssl dhparam -out dhparam.pem 2048

wKioL1lbWf6i9PdGAAAs95nCKbw091.jpg

二、生成HTTP Public Key Pinning(https://developer.mozilla.org/en-US/docs/Web/HTTP/Public_Key_Pinning


# cd /etc/letsencrypt/live/iorisun.com/
# openssl rsa -in privkey.pem -outform der -pubout | openssl dgst -sha256 -binary | openssl enc -base64
writing RSA key
9rcncxVnzws62MPkX5nUJPKs5jAGAhnxeqANv0Hx7Vo=
或者:
# openssl s_client -servername www.iorisun.com -connect www.iorisun.com:443 | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = iorisun.com
verify return:1
writing RSA key
9rcncxVnzws62MPkX5nUJPKs5jAGAhnxeqANv0Hx7Vo=
# openssl x509 -in chain.pem -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
writing RSA key
YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=
生成備用證書指紋(官方備用):
# curl https://letsencrypt.org/certs/lets-encrypt-x4-cross-signed.pem | openssl x509 -pubkey | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1647  100  1647    0     0   1968      0 --:--:-- --:--:-- --:--:--  1967
sRHdihwgkaib1P1gxX8HFszlD+7/gTfNvuAybgLPNis=

三、修改nginx配置文件:

# vim /etc/nginx/conf.d/default.conf 
server {
    listen 80;
    listen 443 ssl http2;
    server_name www.iorisun.com iorisun.com;
    root         /usr/share/nginx/html/;
    index        index.html index.php index.htm;
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }
    ssl_certificate /etc/letsencrypt/live/iorisun.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/iorisun.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout  10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/letsencrypt/live/iorisun.com/chain.pem;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    server_tokens off;
    resolver 8.8.4.4 8.8.8.8 valid=300s;
    resolver_timeout 10s;
    fastcgi_hide_header X-Powered-By;
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
    add_header Public-Key-Pins 'pin-sha256="9rcncxVnzws62MPkX5nUJPKs5jAGAhnxeqANv0Hx7Vo="; pin-sha256="YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg="; pin-sha256="sRHdihwgkaib1P1gxX8HFszlD+7/gTfNvuAybgLPNis="; max-age=2592000; includeSubDomains';
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;


  配置完以後能夠測試一下網站的安全級別:https://www.ssllabs.com/ssltest/

wKioL1lcckfS3DHIAAEIJumxZa8600.jpg

參考:https://blog.kuoruan.com/71.html

https://imququ.com/post/http-public-key-pinning.html

https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

https://ithenrik.com/blog/posts/activating-http-public-key-pinning-hpkp-on-lets-encrypt

相關文章
相關標籤/搜索