Https
在现代互联网应用中,网上诈骗、垃圾邮件、数据泄露的现象时有发生。为了数据安全,我们都会选择采用https技术。甚至iOS开发调用接口的时候,必须是https接口,才能调用。现在有部分浏览器也开始强制要求网站必须使用https,网站网页基于https已经势不可挡。https的时代已经到来。
SSL/TLS
TLS(Transport Layer Security) 是 SSL(Secure Socket Layer) 的后续版本
01.准备工作
在客户端(Windows)生成证书,然后安装到服务端(Linux)
下载OpenSSL
Windows:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions
Linux:[ Downloads ] - /source/index.html
安装OpenSSL
Windows安装:
双击运行,安装到指定目录即可。
02.生成服务端证书
在Windows系统中生成服务端证书,然后再把相关文件上传到服务器。
查看Win系统已存证书
certmgr.msc
证书中的信息
-
Country Name (2 letter code) [XX]:CN #请求签署人的信息
-
State or Province Name (full name) []: #请求签署人的省份名字
-
Locality Name (eg, city) [Default City]:# 请求签署人的城市名字
-
Organization Name (eg, company) [Default Company Ltd]:#请求签署人的公司名字
-
Organizational Unit Name (eg, section) []:#请求签署人的部门名字
-
Common Name (eg, your name or your server's hostname) []:#这里一般填写请求人的服务器域名
key:私钥
csr:证书签名请求文件,即待签名证书
crt:证书
在Win下生成证书
1.生成私钥:.key
找到OpenSSL安装目录下的/bin目录中的OpenSSL.exe
执行命令(注意目录的访问权限,下同)
openssl genrsa -des3 -out c:/dev/server.key
生成私钥,需要提供一个至少4位,最多1023位的密码
2.由私钥创建待签名证书:.csr
openssl.exe req -new -key c:/dev/server.key -out c:/dev/pub.csr
需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。
3.查看证书中的内容
openssl.exe req -text -in c:/dev/pub.csr -noout
生成内容清单:
server.key:服务器私钥
pub.csr:服务器待签名证书
03.自建CA对证书进行签名
我们用的操作系统(windows, linux, unix ,android, ios等)都预置了很多信任的根证书,比如我的windows中就包含VeriSign的根证书,那么浏览器访问服务器比如支付宝<www.alipay.com>时,SSL协议握手时服务器就会把它的服务器证书发给用户浏览器,而这本服务器证书又是比如VeriSign颁发的,自然就验证通过了。
由于费用的原因,我们需要自建CA机构,来给我们自己的证书进行签名。所谓"CA机构"的本质,其实也是一套证书,只不过这套证书具有"公信力",可以用来给别人签名。
1.创建CA私钥
openssl.exe genrsa -out c:/dev/myca.key 2048
2.生成CA待签名证书
openssl.exe req -new -key c:/dev/myca.key -out c:/dev/myca.csr
3.生成CA根证书
openssl.exe x509 -req -in c:/dev/myca.csr -extensions v3_ca -signkey c:/dev/myca.key -out c:/dev/myca.crt
4.对服务器证书签名
对上一个环节生成的服务端 待签名证书(.csr)
进行签名,需要用到本CA机构的 私钥(.key)
和证书(.crt)
作为参数:
openssl x509 -days 365 -req -in c:/dev/pub.csr -extensions v3_req -CAkey c:/dev/myca.key -CA c:/dev/myca.crt -CAcreateserial -out c:/dev/server.crt
生成内容清单:
myca.key:ca机构私钥
myca.csr:ca机构待签名证书
myca.crt:ca机构证书,即根证书
server.crt:服务器证书,被ca机构签名过的证书
04.Nginx配置
将生成好的服务端证书上传到服务器指定目录,并在Nignx中进行配置
添加信任
在当前系统中安装证书