浅谈HTTPS链接的重要性和安全性 网络安全

03.png

今天我的一位仁兄被人误导说HTTPS慢,就这个问题我们来浅谈下HTTPS的速度和安全。首先HTTPS是一个优良而且很棒的协议,他为服务器和客户端之间的数据传输提供了强有力的保障。浅谈HTTPS的速度和安全事实证明HTTPS速度是快的。

Mrxn通过实验测试结果证明,HTTPS确实需要CPU来中断SSL连接,这需要的处理能力对于现代计算机而言是小菜一碟了,你会遇到SSL性能瓶颈的可能性完全为0,首屏加载时间与HTTP协议的时间几乎一致。慢,只会在你网络出现问题的时候发生,和SSL/HTTPS毫无干系,或者极有是你的应用程序性能上遇到瓶颈。
HTTPS是一个重要的连接保障
虽然HTTPS并不放之四海而皆准的web安全方案,但是没有它你就不能以策万全。所有的web 安全都倚赖你拥有了HTTPS。如果你没有它,不管对密码做了多强的哈希加密,或者做了多少数据加密,攻击者都可以简单的模拟一个客户端的网络连接,读取它们的安全凭证,极具威胁。此外,证书签名很显然不是一个完美的实践,但每一种浏览器厂商针对认证机构都有相当严格和严谨的规则。要成为一个受到信任的认证机构是非常难的,而且要保持自己良好的信誉也同样是困难的。
HTTPS流量拦截可以避免
本质上讲,可以使自己的客户只去信任真正可用的 SSL 证书,有效的阻挡所有类型的SSL MITM攻击,如果你是要把 SSL 服务部署到一个不受信任的位置,你最应该考虑使用SSL证书。
HTTPS拥有免费的证书服务
国内和国外都提供了免费的基础等级SSL证书,普及了SSL的支持。 一旦让加密的方案上线,你就能够对你的网站和服务进行100%的加密,完全没有任何花费。
HTTP 在私有网络上并不安全
如果一个攻击者获得了对你的任何内部服务的访问权限,所有的HTTP流量都将会被拦截和解读,这就是为什么HTTPS不管是在公共网络还是私有网络都极其重要的原因。如果是把服务部署在AWS上面,就不要想让你的网络流量是私有的了,因为AWS网络就是公共的,这意味着其它的AWS用户都潜在的能够嗅探到你的网络流量。
2015年百度启用HTTPS搜索
在2015年5月,百度也启用了HTTPS安全搜索,并且支持HTTPS站点的积极优先收录,更可以证明,互联网巨头也开始注重网络传输安全了。
总结
如果你正在做网页服务,毫无疑问,你应该使用 HTTPS。它很容易且能获得用户信任,没有理由不用它。作为ICP,作为程序员我们必须要承担起保护用户的重任。
PS:没有经过事实验证的任何说法,不值得我们信任!


admin 发布于  2015-9-17 19:03 

emlog 使用ssl证书开启HTTPS安全访问三步曲 技术文章

02.jpg

最近在研究ssl,所以就给自己得博客使用了ssl,拿自己的博客实战研究ssl,哈哈,废话不说,如果你也想体验一下ssl,那就开始吧:

科普一下(ssl有啥好处呢):参考-浅谈HTTPS链接的重要性和安全性 这篇文章。

ssl传送大概示意图:01.jpg

emlog配置ssl很简单,只需要三步:

第一步:申请ssl证书,学习研究推荐使用免费的ssl证书(如果你是土豪,请无视-_-|),申请教程不写了,没时间,google搜索一大把。

第一个:https://www.startssl.com/ 第二个:https://www.wosign.com/  第一个是英语的,如果看不懂就用第二个国内的,但是国内的只支持sha1算法,国外的可以选择sha2-256位RSA公钥,和4096位的服务器crt身份密钥,更高的加密算法。效果请查看我的网站

申请成功解压之后,文件目录结构如下图所示:

04.png


因为这里我们是用NGINX WEB环境的,所以我们需要解压FOR NGINX.ZIP文件包,然后看到一个CRT一个KEY文件。

第二步、上传和部署SSL证书 A - 把上面的一个CRT一个KEY文件上传到VPS ROOT目录中,然后对应修改成SSL.CRT和SSL.KEY文件名,或者我们用作其他命令都可以。 B - 解密私钥和设置权限

openssl rsa -in ssl.key -out /root/ssl.key
chmod 600 /root/ssl.key

登录SSH,执行上述两行脚本,解密私钥和授权。


第三步、在LNMP环境部署站点SSL设置

我们需要在已有的LNMP添加了站点,然后在站点对应的CONF文件设置。

在"/usr/local/nginx/conf/vhost/"目录文件中,找到对应站点的conf文件,然后修改设置如下

server
{
 listen 80;
 listen 443 ssl;
#listen [::]:80;
ssl on;
        ssl_certificate /root/ssl.crt;
        ssl_certificate_key /root/ssl.key;
server_name mrxn.net mrxn.net;

/root/ssl.crt 是我自己的设置,对应路径我们要与之前上传的CRT和KEY文件路径对应以及文件名不要搞错。

最后,我们重启LNMP,可以看到SSL证书生效,且HTTPS可以访问站点。

06.png


这是在网站所有资源都在本域名下,而且是https 加密安全访问的情况下。一般你一操作完都不是这样的,而是这样的:

05.png

小锁头上面有一个感叹号标志的,如何解决呢:

首先是在后台设置域名地址为:https://mrxn.net 然后,修改 /include/lib/function.base.php ,把头像获取的链接修改成https://开头的:$avatar = "https://cn.gravatar.com/avatar/$hash?s=$s&d=$d&r=$g"; 再回来  数据--更新缓存 之后,打开首页 Ctrl + F5 基本上就是绿色的小箭头了。

如果还没有呢,那多半就是你文章的图片地址是 https://mrxn.net 这样开头的,所以,直接更新数据库的blog表的content和excerpt字段即可:

update emlog_blog set content=replace(content,'https://mrxn.net','https://mrxn.net');
update emlog_blog set excerpt=replace(excerpt,'https://mrxn.net','https://mrxn.net'); 

这样更新完数据库之后,你的网站就基本上全部替换完了非加密连接了(内容页和摘要都更新了,其他的地方貌似没有了,自己写的不算)。
如果我们需要强制使用HTTPS网址访问,那我们就需要取掉 listen 80;脚本。或者是在 listen 80;前面加上# 修改成:#listen 80;

最终修改配置大概如下:

server
    {
        #listen 80;
        listen 443 ssl;
        #listen [::]:80;
        ssl on;
        ssl_certificate 存放ssl证书文件路径.crt;
        ssl_certificate_key 存放ssl证书文件路径.key;
        server_name mrxn.net mrxn.net;
        index index.html index.htm index.php default.html default.htm default.php;
        root  网站存放文件路径;
        keepalive_timeout   60;
       .......此处省略.......
    }
server {
listen 80;
server_name mrxn.net mrxn.net;
return 301 https://mrxn.net$request_uri;
}


注意将域名修改成你自己的域名。至此,基本上就完成了ssl证书的安装,开启https访问了。

相关文章:


一段代码让nginx实现网站资源防盗链

nginx配置location总结及rewrite规则写法

nginx配置ssl加密(单双向认证、部分https)

NginxRewrite规则判断普通用户与搜索引擎爬虫(UA)实现https跳转

SSL/TLS原理详解

OpenSSL 与 SSL 数字证书概念贴

基于OpenSSL自建CA和颁发SSL证书


最后呢,希望有高手带我学习https方面的东西呀,这篇文章呢,也希望对想要使用ssl的童鞋一点帮助,如果哪位看官有更好的方法或者是建议,欢迎留言/评论 不吝赐教啊,我洗耳恭听,多帮忙吧 谢谢。


admin 发布于  2015-9-17 18:45