发表于: 2018-02-10 22:00:01

1 855


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin) 

对自己的域名进行http 80端口到https 443安全端口的转换.先上一下成果图.

真的一切事情都不是眼睛看着的那么简单,http到https也不仅仅是加个s而已.....


什么是https?

网景在1994年创建了HTTPS,并应用在网景导航者浏览器中。 最初,HTTPS是与SSL一起使用的;在SSL逐渐演变到TLS时,最新的HTTPS也由在2000年五月公布的RFC 2818正式确定下来。

它是由Netscape开发并内置于其浏览器中,用于对数据进行加密和解密操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全套接层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。[1] 
也就是说它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性,凡是使用了 https 的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过 CA 机构颁发的安全签章来查询[2]  。

HTTPS和HTTP的区别
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS和HTTP的区别主要为以下四点:
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。


了解了大概的信息,我们接下来就是如何操作了.

第一步,我们需要我们域名专属的证书.阿里云有提供免费试用的版本,大爱马爸爸.(毕竟收费的都贼贵)

按照箭头所示选择(这个免费的藏的还挺深),每个阿里云账户可以申请20个免费的SSL.

申请之后到控制台点击补全提交验证.

进去之后根据介绍按照步骤一步一步填写内容,需要注意的是免费版的证书只能绑定一个子域名.类似于www.tendk.com就属于一个子域名,web.tendk.com也属于一个子域名,只能绑定一个三级子域名.

然后补全之后就需要我们去设置我们的DNS解析.

https://help.aliyun.com/knowledge_detail/48016.html

大致就是这样配置

设置好之后就可以回证书页面进行验证了.验证通过之后就需要下载证书,上传到我们服务器的相应位置,并进行配置.因为我们使用了nginx,所以下载nginx版本的证书即可.

这里有很详细的文字教程,另外贴一下视频教程.

https://help.aliyun.com/video_detail/54216.html?spm=5176.2020520163.cas.59.569d2b7ay8xUYf

最后再给一下默认让80端口跳转到443端口的整套设置.

这里跳转的设置

server {

listen 80;
       
       server_name www.tendk.com;
       
       #告诉浏览器有效期内只准用 https 访问

add_header Strict-Transport-Security max-age=15768000;
       
       rewrite ^ https://$http_host$request_uri? permanent;
       
       #永久重定向到 https 站点

#return 301 https://$server_name$request_uri;

然后是443端口的设置

server {
listen 443 ssl;
       server_name www.tendk.com;
     
       ssl_certificate cert/214503046540992.pem;//对应你的文件路径即可
       ssl_certificate_key cert/214503046540992.key;
     
       ssl_session_cache shared:SSL:1m;
       ssl_session_timeout 5m;
     
       ssl_ciphers HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers on;
       #禁止在header中出现服务器版本,防止黑客利用版本漏洞攻击
server_tokens off;
       #如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问
#add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
       # ......
fastcgi_param HTTPS on;
       fastcgi_param HTTP_SCHEME https;
     
       location / {
proxy_pass http://server1;
       root html;
       index index.html index.htm;
         
       }
}

之后nginx -s reload即可.

明天计划的事情:(一定要写非常细致的内容) 

把反射再撸一遍. 再好好看看复盘的一些东西.
遇到的问题:(遇到什么困难,怎么解决的) 

有了证书之后清除缓存不能只清cookie了,还得清除下载的文件,因为证书是文件的形式.我改了配置之后由于没有清除下载文件,就导致http请求访问每次都给我跳转到localhost,搞了我几小时....


收获:(通过今天的学习,学到了什么知识)

学会了如何将http无状态协议转换为目前主流安全的https带证书的安全协议连接.



返回列表 返回列表
评论

    分享到