个人博客http转https

简介:

  搭建个人博客的时候,就看过一些免费证书申请的文章,也浏览过一些使用Https的博客。使用Https要比Http安全很多,至少在国内很普通的流量劫持攻击会减少很多。闲来无事,测试把自己的个人博客也升级到Https。

  使用Https加密首先就需要申请个人博客证书,收费的证书颁发机构国内和国外都有很多。个人博客推荐使用现在比较流行的Let's Encrypt。申请过程比较简单,使用官方自动化脚本:

1、配置git环境:# yum install git

2、下载自动化脚本到本地

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

# cd certbot

3、生成证书

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

wKiom1lbCyiyAPPEAAEJw2vg_Q4085.jpg

将安装以下软件包

wKiom1lbC1zha2-9AACOj719T3A383.jpg

安装过程,需要手动确认是否安装,输入Y确认。另外还需要接受官方协议,输入A回车即可。

注意:申请时,防火墙需要开通https端口

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

# firewall-cmd --reload

申请成功后,有以下提示:

wKiom1lbDxCTGYtKAAB2LMq11s0658.jpg

可通过tree命令查看:# tree /etc/letsencrypt/live/

wKiom1lbEFXyG-DwAABORTvp_1k863.jpg

4、修改nginx配置文件

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

在Nginx配置文件中加入SSL参数定义,把http重定向到https

如下:修改和增加以下内容(为避免升级nginx后主页被修改,最好把index.php放在首位)

wKiom1lbVoTAW3yyAABaVJvvTig874.jpg

重启服务后,再打开网站就可以看到绿色的小锁了。

wKioL1lbVkOAwDgEAAAO8MdVwp0808.jpg

5、设置证书自动延期

Let's Encrypt的证书有效期只有90天,需要定期更新证书:

通过crontab制定一个计划任务,每2个月(即1、3、5、7、9、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服务再运行,否则会报错)。

6、修改博客站点地址

wKioL1lbVzuBEizwAAA1j3qNceQ145.jpg

注意:需要同步修改图片地址http为https(如修改数据库等)


优化Https安全性

1、生成dhparam.pem

# cd /etc/ssl/certs/

# openssl dhparam -out dhparam.pem 2048

wKioL1lbWf6i9PdGAAAs95nCKbw091.jpg

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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 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 =

3、修改nginx配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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



本文转自 lorysun 51CTO博客,原文链接:http://blog.51cto.com/lorysun/1944477

相关文章
|
4月前
|
XML JSON API
识别这些API接口定义(http,https,api,RPC,webservice,Restful api ,OpenAPI)
本内容介绍了API相关的术语分类,包括传输协议(HTTP/HTTPS)、接口风格(RESTful、WebService、RPC)及开放程度(API、OpenAPI),帮助理解各类API的特点与应用场景。
|
4月前
|
Android开发 Kotlin
|
6月前
|
安全 网络安全 数据安全/隐私保护
网页安全演进:HTTP、HTTPS与HSTS
这整个进程实质上是网页安全由“裸奔”到“穿衣”再到“绑带”的演变史。它保障了数据的机密性和完整性,降低了中间人攻击的风险,最终实现了更自由、更安全的网络环境。但别忘了,技术永远在发展,网络安全的赛跑也永无终点。*ENDPOINT*
444 11
|
7月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
225 18
|
7月前
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
747 20
|
7月前
|
安全 网络协议 算法
HTTP/HTTPS与SOCKS5协议在隧道代理中的兼容性设计解析
本文系统探讨了构建企业级双协议隧道代理系统的挑战与实现。首先对比HTTP/HTTPS和SOCKS5协议特性,分析其在工作模型、连接管理和加密方式上的差异。接着提出兼容性架构设计,包括双协议接入层与统一隧道内核,通过协议识别模块和分层设计实现高效转换。关键技术部分深入解析协议转换引擎、连接管理策略及加密传输方案,并从性能优化、安全增强到典型应用场景全面展开。最后指出未来发展趋势将更高效、安全与智能。
293 1
|
8月前
|
安全 网络安全 数据安全/隐私保护
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
475 3
|
10月前
|
网络协议 安全 网络安全
HTTP与HTTPS协议入门
HTTP协议是互联网的基石,HTTPS则是其安全版本。HTTP基于TCP/IP协议,属于应用层协议,不涉及数据包传输细节,主要规定客户端与服务器的通信格式,默认端口为80。
428 25
HTTP与HTTPS协议入门
|
10月前
|
缓存 安全 网络安全
代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?
本文详细介绍了HTTP、HTTPS和SOCKS5三种代理协议的特点、优缺点以及适用场景。通过对比和分析,可以根据具体需求选择最合适的代理协议。希望本文能帮助您更好地理解和应用代理协议,提高网络应用的安全性和性能。
706 17
|
7月前
|
网络安全 开发者
如何解决HTTPS协议在WordPress升级后对网站不兼容的问题
以上就是解决WordPress升级后HTTPS协议对网站的不兼容问题的方法。希望能把这个棘手的问题看成是学校的管理问题一样来应对,将复杂的技术问题变得更加有趣和形象,并寻觅出解决问题的方式。希望你的网站能在新的学期得到更好的发展!
221 19