原理图:
- 客户端生成一个随机数 random-client,传到服务器端(Say Hello)
- 服务器端生成一个随机数 random-server,和着公钥,一起回馈给客户端(I got it)
- 客户端收到的东西原封不动,加上 premaster secret(通过 random-client、random-server 经过一定算法生成的东西),再一次送给服务器端,这次传过去的东西会使用公钥加密
- 服务器端先使用私钥解密,拿到 premaster secret,此时客户端和服务器端都拥有了三个要素:random-client、random-server 和 premaster secret
- 此时安全通道已经建立,以后的交流都会校检上面的三个要素通过算法算出的 session key
第一步、生成证书请求文件(可选1024 2048位)
如果使用-des3参数,将会需要输入密码对私钥进行加密,如不需要对私钥加密请不要使用-des3选项
输入两次密码后,将会生成server.key私钥文件
运行如下命令生成证书请求文件(CSR)
openssl req -new -key server.key -out server.csr
接下来提示输入私钥密码和申请证书的详细信息
从Email地址开始,下面的信息都不需要,请保留为空,直接回车即可
需要输入的信息说明请见下表:
字段 | 说明 | 示例 |
Country Name | ISO国家代码(两位字符) | CN |
State or Province Name | 所在省份 | Shanghai |
Locality Name | 所在城市 | Shanghai |
Organization Name | 公司名称 | GlobalSign China Co., Ltd.
|
Organizational Unit Name | 部门名称 | IT Dept. |
Common Name | 申请证书的域名 | Cn.globalsign.com |
Email Address | 不需要输入 |
|
A challenge password | 不需要输入 | |
完成以上的操作会在对应的目录下生成server.key和server.csr
第二步:提交CSR,申请证书(我们申请是域名型通配符证书)
把csr文件发给证书厂商 厂商会发给你三个文件(根证书(root.cer) 中级证书(dvrootSHA256.cer) ssl服务证书(server.cer))
第三步:获取服务器证书
合并ssl服务证书和中级证书(把中级证书的内容追加到ssl服务证书的尾部)
第四步:更新nginx配置文件(nginx必须有ssl模块 --with-http_ssl_module)(指令必须配置在server段 nginx对证书有读的权限)
server {
listen 443;
server_name www.domain.com;
ssl on;
ssl_certificate /etc/ssl/server.cer; //公钥文件(Globalsign颁发的证书)
ssl_certificate_key /etc/ssl/server.key; //私钥文件
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on;
location / { root html; index index.html index.htm; }
}
按照以上的步骤配置完成后,重新启动Nginx(如果有设置server.key私钥密码,这时会提示输入)后就可以使用https://www.domain.com来访问了