由于公司业务需求,最近新上一些域名,并且需要购买SSL证书和服务器HTTPS配置,这两天在折腾这些事情,后面顺便把自己的几个网站都配置了SSL证书,关于"免费申请SSL证书、安装和跳转HTTPS"的一些知识点,分享出来,供大家参考。在未了解SSL知识之前,相信大家都会有这些疑问:
什么是SSL证书?
SSL证书优势?
HTTPS是什么?
怎么购买?
.......
带着这些疑问,请允许我一一道来。
什么是SSL证书
SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。
SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了),即通过它可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露,保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。
为什么要SSL证书
为什么要申请SSL证书?首先我们需要了解SSL证书的优势,举个简单例子来陈述,更容易理解。比如没有SSL证书的网站,在浏览器打开后,发现在地址栏左边有个"绿色提示"图标,点开发现提示您的网站不安全。
这样会严重影响网站的信用度和用户访问。那么申请过SSL和配置HTTPS的网站就会是这个提示,如下图:
提醒用户,此网站是经过加密处理的,安全访问。
有些童鞋就开始发问了,HTTPS和HTTP啥区别?
其实HTTP是默认,而HTTPS是加密过的,来看下它的工作原理。
HTTPS 工作原理
HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的具体描述如下:
1)浏览器将自己支持的一套加密规则发送给网站。
2)网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3)浏览器获得网站证书之后浏览器要做以下工作: a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。 b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。 c) 使用约定好的HASH算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
4)网站接收浏览器发来的数据之后要做以下的操作: a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。 b) 使用密码加密一段握手消息,发送给浏览器。
5)浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。
HTTPS对应的通信时序图如下:
那么相对于HTTP,他们有什么区别呢?
HTTPS协议和HTTP协议的区别
1)https协议需要到ca申请证书,一般免费证书很少,需要交费。
2)http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
3)http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
4)http的连接很简单,是无状态的 。
5)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议, 要比http协议安全。
了解到这里,我相信大家对于SSL证书和HTTPS协议有了初步的认知了吧,那么我们如何去购买和配置呢?
购买SSL证书
如果有免费的,当然不会去买付费的,这个没毛病,相信大家也是这个想法,但是相对于中大型网站,还是需要企业专业的付费证书了。拿阿里云的SSL证书为例,如图:
从上图来看,它有4种品牌的证书,当然了,不同品牌价格不一样,业务也不一样,一般免费的我们会选择最后一个Symantec,但是只能选一年和使用一个域名,还有很多其他限制,不过对于个人站长够用了。还有其他的平台也可以购买,比如百度云,阿里云等。
按照正常流程购买完后,我们可以看到这个状态,如图:
这个提示我们域名要验证,也就是说,我们在域名管理下面,要新增一条txt解析目录或者上传一个文件在对应的根目录下,然后平台会自动验证您的域名,验证成功后系统会发送"签发证书"给你,比如下图:
此时,我们要把证书下载下来,你可以发给服务器配置的相关人员,进行处理。当然了,为嘛自己能搞定的事情非要去别人处理呢,全部搞定多好是吧。OK,接下来就是最重要的知识点:服务器相关配置。
服务器SSL证书安装和配置HTTPS
首先,现在服务器要分windows和Linux,配置起来有区别,首先来看下windows的。
windows的配置,分享过一篇文章,因为我自己的服务器目前有一台是windows的,我们可以去看下这篇文章:
如何在windows服务器上完成安装SSL证书以及HTTPS配置
接下来就是Linux服务器的配置,我最近在godaddy上买了个服务器,也配置了,就拿这个为例来简单分享吧。
1、SSL For Free工具官方网站【网址:https://www.sslforfree.com】
2、输入域名获取SSL证书步骤
3、选择第二项,自动配置。
点击下面的按钮,然后按照说明,我们把生成的两个文件,下载下来,上传到规定的服务器目录下面,然后打开对应的链接,看下文件是否存在。
确认链接正常打开后,就下载SSL证书吧。接下来就是打开GODADDY的SSL证书配置页面。
点击这个链接即可,然后在里面的页面对应的填写我们刚才申请的。
就搞定了,很简单吧。
最后你可以把你的网站域名前面加上https,试下是不是显示"链接安全"呢?如果还是不行的话,可以加群或者留言哦!
OK,两种服务器的配置基本就这些知识点,不过还是不要高兴得太早,还有一个很重要的环节,如果我输入http协议地址或者是www.jiangweishan.com,应该是自动跳转到https的地址,这样才完事,对嘛,不然上面工作都是白搭。
其实这个简单的,方法如下:
Linux主机
如果使用的是Linux主机,需要在你的网站根目录下的.htaccess文件(没有需要创建一个)中添加下面代码然后保存即可:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yourdomainname.com/$1 [R,L]
(你网站的域名替换上面的yourdomainname.com)
当然,如果想指定某一个文件使用https,则添加一下代码(此时.htaccess文件需要放在你指定的文件夹中):
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} somefolder
RewriteRule ^(.*)$ https://www.yourdomainname.com/somefolder/$1 [R,L]
(你网站的域名替换上面的yourdomainname.com)
Windows主机
GoDaddy的Windows主机需要在web.config文件中(没有需要创建),然后在该文件里面添加下面代码:
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>
通过以上方式便可以实现http自动跳转到https。
总结
写这篇文章的初衷是为了方便更多童鞋初步和深入了解SSL和HTTPS的知识点,文采有限,难免有疏忽之处,恳请赐教。
现在阿里云服务器正在做活动,有需求自己建个站或者兼职运营网站的,大家可以点下链接:二折购买阿里云服务器。
错过这波,就别后悔了,o(* ̄︶ ̄*)o。
如果您有想法建站赚钱或者其他的SSL想法,都可以加入我们群讨论哟,群主不吝赐教。