一、什么是 SSL 证书,什么是 HTTPS 网站?
SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了)。即通过它可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露。保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。
二、什么网站需要 SSL 证书?
就我遇到过的网站,配置了认证的证书的,大概有这么几类:
1、购物交易类网站
这个就不用说了,支付宝、财付通等肯定会加密以保护你的密码安全。
2、注册类站点
有些大站点,注册会员或者登陆的时候,会专门通过SSL通道,来保护你的密码安全。比如百度会员中心登录的数据传输通道
三、免费证书startssl申请
startSSL官方地址https://www.startssl.com/,稍微介绍下startSSL:它是一个证书颁发机构,支持免费的ssl证书颁发,相比于只是为了学习ssl安全链接的程序猿们不再需要花上一年好几K的证书费用,当然你也可以在startSSL花上$200左右购买一个付费的高等级ssl证书(毕竟人家给你免费的浏览器可识别的ssl证书也只会有一年而已);startSSL的ssl证书从一开始就被一些具有开源背景的firefox、chrome等支持,目前已经测试的支持的浏览器如下:ie、firefox、chrome、safari,据说opera还不支持,就连startssl官方站都无法支持,不知为何~~~~原先startssl是不支持ie的,但是不知startssl官方是怎么搞定微软的,现在ie也支持了startssl的ssl证书。废话少说,上图说注册startssl获取一年免费ssl证书的步骤:
3.1 startssl注册
进入startssl官方站,点击右上角那把小锁,上图,打开页面如下:
点击Sign-up进行注册,打开页面如下:
填写就不多说了,第一栏是名字,使用英文更好一点,第二栏是地址,最好精确到街道以及门牌号,第三列是邮政编码以及所在城市的简称(咱搞了个所在城市的拼音,还是通过了嘛,哈哈);第四列是所在国家,默认china无需更改,第五列选择所在省份,最好选择跟你的ip地址所在地是一致的;第六列是你的手机号或者座机号,这年头手机泛滥,填个自己的手机号得到一个免费的一年的ssl证书也无可厚非;第七列需要注意下方的说明,startssl不支持qq.com的邮箱,也就是说你填写的电子邮箱的时候不要用qq邮箱,国内的经过测试163、sina、yahoo.cn均可,最好使用gmail。
填写准确,点解continue(继续)来到邮箱验证,打开刚刚填写的邮箱,有一封来至starssl的注册邮件,里面有验证码:如下,邮件正文中的第二行”code is ****“的,那个is后面的就是这个验证码,复制,填入到上图中,点击continue继续,注册即告成功(下图2),接下来等待startssl的人工审核,审核通过后会发一封邮件给你,这里用我已经注册成功的邮件为例说明:
3.2 登录账号的激活
上述startssl人工审核通过后发给你的邮件(如下图1),打开后有一个有个链接,复制到浏览器地址栏回车打开的地址就进行账号的证书<非你申请的ssl证书,这里只是一个账户登录证书,就跟国内某些银行的登录可以使用证书登录一样>安装,startssl不通过账号密码方式登录,而只支持通过他们自己的证书方式登录,所以这里打开的页面实际上是一个你的账号证书的安装页面(一个连接地址)以及一个验证码,这里最好使用firefox或者chrome,有时候ie会安装失败,一旦失败就意味着你得重新注册.
大致说下操作:复制邮件(上图)第四行的url地址,粘贴到firefox地址栏中回车,打开的页面中有个输入框,输入上图邮件中第五列中的process is后面的字符串,点击继续出现如下页面,如下图,选择默认的高级即可,点击continue继续
继续后来到安装你的账号证书的页面,点击install,如下图:
经过一会(一般不超过3分钟)就可以出现如下界面:说明你的账号证书已经安装成功啦~~~~备份一下这个证书咯,以后就可以用这个证书到别处登录了,如果不慎丢失这个证书,以后就只能重新注册咯~~~~
注册成功后,点击finish来到控制面板,如下图:
3.3 添加并验证域名所有者信息
添加你的域名,点击上图右侧那个菜单,也就是”Validations Wizard“咯,打开的页面如下:选择域名验证,也就是 Domain Name XX咯,如下图,自动进入下一步填写域名
来到填写域名的位置,如下图:
输入你的域名,选择后缀,继续打开验证方式选择,如下图,选择你的域名注册时留下的邮箱地址即可,当然如果你的域名下有相应的邮箱地址也是可以的(如果挂在QQ域名邮箱下就算了,你还是老老实实的选择注册域名时填写的邮箱吧~~~哈哈).....点击continue继续下一步
打开刚才选择的邮箱,会收到一封验证码邮件,如下,复制验证码,输入到框框内点击继续(不慎,没有留下截图,不过还好,也就是一个输入验证码的框框),来到下图2,点击finish即可完成域名的所有者认证:
3.4 激动人心的时刻来了,申请免费一年的ssl证书
上一步finish后又来到控制面板,如下图:点击中间那个菜单,也就是”Certificates Wizard“咯~~~~
打开的页面如下:选择web server SSL/TSl Certificate 也就是传说中的支持https访问的ssl证书,点击continue继续..
生成公匙,也就是https中的.key文件,如下图:
输入一个长度合适的密码并重复<第二栏重复密码>,最好超过16位,而且字母、数字混杂(请记住这个密码,稍后还会用,这里就菜鸟的叫法把这个密码叫做 证书密码 ,以后提到证书密码,就是指这个密码咯,以后不再赘述),第三栏选择加密强度以及第四栏的加密算法,这里全部选默认。点击continue继续--------------<ps:这里生成的也就是一个公用密码文本,如果你懂得使用openssl自己生成,这里就可以选择skip跳过,当然既然按咱这个教程,就老老实实输入一个密码并且重复一次,然后continue,多 保险咧~~~哈哈>,点击后会有一个弹窗,确认即可(好像是左边那个按钮,哈哈)
来到如下页面:也就是刚才用密码生成的一个key文件, 请复制框框内的文本<安全起见,告诉你怎么整,先鼠标点入框框内,然后全选,什么?不知道全选?Ctrl+a啊~,再复制,什么?不知道复制?Ctrl+c啊;当然你也可以Ctrl+x剪切掉> ,然后将复制的内容是用文本编辑器粘贴<记事本会用吧~~~>,保存文件名为ssl.key<一定要这个破名字吗?不一定啊,但是为了后面的nginx的配置好讲解一点,咱就忍忍吧~~~>,点击continue继续
来到如下页面:选择已经认证过的域名啦~~~~~如下:直接continue继续
来到,你需要为你的域名下的哪个主机添加https访问的位置,这里就看你自己的配置啦!~这列示例填写一个www主机,也就是在框框内填入www啦~~~~点击continue继续.....
来到如下界面,没啥好说的,直接continue继续......
可能需要等待几十秒,startSSl正在后台生产crt文件呢~~你总得让人家的服务器有个喘息的机会吧~~~~等来的就是如下的页面<ps:以前startssl在此步骤后需要人工审核后再给你发送邮件以及code进行证书提取,但是现在好像直接是一气呵成了,反正我这里的示例是一气呵成,直接就将crt证书给你生成了~~~~>
复制这个框框里的文本,还是用个文本编辑器粘贴保存为ssl.crt文件<操作方法跟前面保存那个破名字叫ssl.key的一样,就不啰嗦了>......
以上的的所有步骤不过是为了得到两个破东西,一个是ssl.key<这个如果你懂得openssl,自己就可以搞定>,一个是ssl.crt文件,这个ssl.crt文件才是王道,才是以上废了这么多精力所得到的ssl证书文件。好了,接着说nginx下的配置使你的服务器支持https的访问。
四、nginx的配置(linux平台)
为了便于说明,咱来个约定:
约定:假设你的nginx安装在/usr/local/server/nginx下,配置文件默认,也就是/usr/local/server/nginx/conf下。同时假设你的服务器已经支持openssl
假设在你的/usr/local/server/nginx/conf下有个文件夹叫ssl,也就是/usr/local/server/nginx/conf/ssl咯
4.1 上传那两个破文件也就是ssl.key和ssl.crt文件咯---可以用一个叫SSH Secure Shell的玩意中的Secure File Transfer Client来上传;上传这个两个文件到/usr/local/server/nginx/conf/ssl下
其实,人家startssl有个教程 地址:https://www.startssl.com/?app=42,但是还是啰嗦的讲解一下~~
4.2 既然是ssl关键文件,那就保护一下啦~~ 修改ssl.key文件的属性即可,什么不会?
putty远程登录服务器,最好是root账户
进入/usr/local/server/nginx/conf/ssl目录,什么?不会?
shell代码:cd /usr/local/server/nginx/conf/ssl
更改ssl.key文件属性
shell代码:chmod 600 ssl.key
4.3 安装ssl.key
通过openssl安装导入,以后启动nginx时就不必每次都需要输入那个破“证书密码”了,什么?哪里来的“证书密码”,看前面申请这个破ssl.key时的约定吧!openssl导入证书公用密码<实际上人家叫公匙啦~~~>,还是在/usr/local/server/nginx/conf/ssl目录下:
shell代码:openssl rsa -in ssl.key -out /usr/local/server/nginx/conf/ssl_ca.key
4.4 获取startssl根证书并合并你自己的证书
获取startssl官方的根证书<暂且就这么叫吧~~~其实人家不叫这个的,没看到是个pem文件嘛~~>,wget获取
shell代码:
wget https://www.startssl.com/certs/ca.pem
wget https://www.startssl.com/certs/sub.class1.server.ca.pem
合并:
shell代码:cat ssl.crt sub.class1.server.ca.pem ca.pem > /usr/local/server/nginx/conf/ssl_ca.crt
ps:处理下生成的这个ssl_ca.crt文件,不然以后就不是坑爹了,而是坑祖宗了·~~~
也就是会出现如下错误:
处理方法很简单,直接vi /usr/local/server/nginx/conf/ssl_ca.crt
找到如下图的位置:
在绿色那个地方回车一下然后保存即可。什么回车了无效?vi的使用就不告诉你了,这是秘密~~~~
4.5 配置nginx支持https访问
配置nginx的配置文件,默认是vi /usr/local/server/nginx/conf/nginx.conf 这里确实是不好说,直接上图:看不清楚就点小图看大图咯~~~
请问我回车后无效怎么回事啊