94 篇文章0 订阅
HTTPS证书在企业中非常重要,因为HTTP不安全,采用HTTP协议容易受到劫持和篡改,如果是采用HTTPS,数据在传输过程中加密,可以避免报文信息被窃取篡改,避免网站传输时信息泄露。实现https,要了解SSL协议,现在我们使用的大多是TLS加密协议了,HTTPS运行在应用层,TLS应用在表示层,是SSL协议发挥作用的一层,使应用层的HTTP协议在没有感知的情况下实现了数据的加密传输。
HTTP加密传输流程
浏览器发起请求,服务端接收请求,返回给浏览器证书、证书中包含公钥,浏览器判断证书是否合法,如果不合法进行警告提示。如果合法,生成随机数,通过公钥加密随机数,把加密后的随机数传输给服务端,服务端通过私钥解密获得随机数,通过传入随机数的对称加密,对数据进行加密,将加密后的内容传输给浏览器,浏览器根据本地存储的随机数进行解密。
模拟网站被篡改
1、配置Nginx文件
1. [root@Web01 test]# cat /etc/nginx/conf.d/test.conf server { 2. listen 80; 3. server_name test.koten.com; 4. root /code/test; 5. index index.html; 6. charset utf-8; 7. }
2、配置Nginx页面
1. [root@Web01 test]# cat /code/test/index.html 2. <!DOCTYPE html> 3. <html lang="en"> 4. <head> 5. <meta charset="UTF-8"> 6. <title>我是title</title> 7. </head> 8. <body> 9. <article> 10. <header> 11. <h1>你好</h1> 12. </header> 13. <p> 14. <b>你</b>最近过的好嘛? 15. </p> 16. <footer> 17. <p><small>版权所有@koten</small></p> 18. </footer> 19. </article> 20. </body> 21. </html> 22. [root@Web01 test]#
3、查看Nginx页面
4、配置Nginx拦截服务器
1. [root@Web02 ~]# vim /etc/nginx/conf.d/jiechi_test.conf 2. upstream jiechi { 3. server 10.0.0.7:80; 4. } 5. 6. server { 7. listen 80; 8. server_name test.koten.com; 9. 10. location / { 11. proxy_pass http://jiechi; 12. proxy_set_header Host $http_host; 13. sub_filter '<h1>你好' '<h1>我好'; 14. sub_filter '<small>版权所有' ' <sma 15. ll>开源'; 16. } 17. } 18. <t.conf" [New] 15L, 360C written 19. [root@Web02 ~]# systemctl restart nginx
5、查看篡改后的内容
6、添加篡改广告
1. [root@web02 conf.d]# vim jiechi_test.conf 2. upstream jiechi { 3. server 10.0.0.7:80; 4. } 5. 6. server { 7. listen 80; 8. server_name test.koten.com; 9. 10. location / { 11. proxy_pass http://jiechi; 12. proxy_set_header Host $http_host; 13. sub_filter '<h1>你好' '<h1>花生瓜子烤鱼片'; 14. sub_filter '<small>版权所有' ' <small><img src="https://p6.itc.cn/q_70/images03/20201226/f979021adb324417bb6dd3889698ee0b.jpeg">'; 15. } 16. } 17. <hi_test.conf" 15L, 459C written 18. [root@Web02 ~]# systemctl restart nginx
7、查看篡改界面
证书类型介绍
域名型DV | 企业型OV | 增强型EV | |
绿色地址栏 | 小锁标记+HTTPS | 小锁标记+HTTPS | 小锁标记+企业名称+HTTPS |
一般用途 | 个人站点,简单的HTTPS加密需求 | 电子商务站点和应用,中小型企业站点 | 大型金融平台,大型企业和政府机构站点 |
审核内容 | 域名所有权验证 | 全面的企业身份验证,域名所有权验证 | 最高等级的企业身份验证,域名所有权验证 |
颁发时长 | 几分钟-24小时 | 3-5工作日 | 5-7工作日 |
单次申请年限 | 1年 | 1-2年 | 1-2年 |
赔付保障金 | 无 | 125-175万美金 | 150-175美金 |
证书购买选择及注意事项
可以选择保护 一个域名www
五个域名www、images、cdn、test、m
通配符域名*.koten.com
注意
1、证书不支持续费,证书到期需要重新申请并进行替换
2、不支持三级域名解析,如test.m.koten.com
3、显示绿色,说明整个网站的URL都是HTTPS,显示黄色,说明网站代码中包含HTTP的不安全链接,显示红色,说明证书是假的或者证书过期。
Nginx单台服务器实现证书
1、Nginx上需要有--with-http_ssl_module模块,创建存放ssl证书的路径
1. [root@Web01 test]# mkdir -p /etc/nginx/ssl_key 2. [root@Web01 test]# cd /etc/nginx/ssl_key/ 3. [root@Web01 ssl_key]#
2、使用openssl命令充当CA权威机构创建证书(生产不使用此方式生成证书,这是不被互联网认可的黑户证书)
1. [root@Web01 ssl_key]# openssl genrsa -idea -out server.key 2048 2. Generating RSA private key, 2048 bit long modulus 3. ...............................+++ 4. .....+++ 5. e is 65537 (0x10001) 6. Enter pass phrase for server.key: #输入密码6666 7. Verifying - Enter pass phrase for server.key: 8. [root@Web01 ssl_key]#
3、生成自签证书,同时去掉私钥的密码
1. [root@Web01 ssl_key]# openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt 2. Generating a 2048 bit RSA private key 3. ..............................................................................+++ 4. ...+++ 5. writing new private key to 'server.key' 6. ----- 7. You are about to be asked to enter information that will be incorporated 8. into your certificate request. 9. What you are about to enter is what is called a Distinguished Name or a DN. 10. There are quite a few fields but you can leave some blank 11. For some fields there will be a default value, 12. If you enter '.', the field will be left blank. 13. ----- 14. Country Name (2 letter code) [XX]:CN 15. State or Province Name (full name) []:BeiJing 16. Locality Name (eg, city) [Default City]:BeiJing 17. Organization Name (eg, company) [Default Company Ltd]:BeiJing 18. Organizational Unit Name (eg, section) []:BeiJing 19. Common Name (eg, your name or your server's hostname) []:koten.com 20. Email Address []:666666@qq.com 21. [root@Web01 ssl_key]# 22. 23. 24. # req --> 用于创建新的证书 25. # new --> 表示创建的是新证书 26. # x509 --> 表示定义证书的格式为标准格式 27. # key --> 表示调用的私钥文件信息 28. # out --> 表示输出证书文件信息 29. # days --> 表示证书的有效期
4、修改Nginx配置文件
1. [root@Web01 ssl_key]# cat /etc/nginx/conf.d/test.conf 2. server { 3. listen 443 ssl; 4. server_name test.koten.com; 5. ssl_certificate /etc/nginx/ssl_key/server.crt; 6. ssl_certificate_key /etc/nginx/ssl_key/server.key; 7. location / { 8. root /code/test; 9. index index.html; 10. } 11. } 12. 13. #配置将用户访问http请求强制跳转https 14. server { 15. listen 80; 16. server_name test.koten.com; 17. return 302 https://$server_name$request_uri; 18. } 19. [root@Web01 ssl_key]# systemctl restart nginx 20. [root@Web01 ssl_key]# echo '测试ssl' > /code/test/index.html
5、浏览器访问