概念了解:
http://www.360doc.com/content/13/0809/14/1073512_305848184.shtml ;
浏览器中证书导出: https://help.aliyun.com/knowledge_detail/40743.html
说明: https://startssl.com/ 上申请免费的证书class 1 ,用于提供https服务
浏览器中证书导出: https://help.aliyun.com/knowledge_detail/40743.html
说明: https://startssl.com/ 上申请免费的证书class 1 ,用于提供https服务
1.账号申请-登录
注册 : https://startssl.com/ ; ---Sign-up 注册成功后会提供一个登录的“管理证书”用于登录。
登录: 将下载的管理证书导入到浏览器中就可以登录 authenticate了。
2. 域名验证(相当于获取到需要加上https域名的授权)-- Domain Validations处列出了验证过的域名
Validations Wizard --> Select Validation --> 选择“ Domain Validation(for SSL certificate ” --->continue --->
输入域名(如:www.abc.com) --> 对应的邮箱会收到一个验证码(verifiction code)--->输入验证码--验证。
3.免费SSL证书申请
3.1 生成CSR文件(一个.csr和一个.key文件)
下载工具(https://download.startpki.com/startcom/startcomtool.exe)或者通过命令生成都可以。本次通过startcom网站提供的工具进行文件生成。
安装工具--打开工具--选择“CSR”--选择“Professional Mode”
-----》Certificate Type 选择“SSL Certificate”
-----》Certificate Subject Information 中输入域名,组织单位和地区(如www.abc.com baidu China)
-----》 Private Key and Algorithm 中选择 “Generate private key” ,Key Length:2048 ,Hash Algorithm:SHA256 ,自定义输入密码(记住以后可能会用)
------》点击“Genrate CSR”
----》-提示你将文件保存的位置和命令(如:E:\ssl,名字命名为www.abc.com.key)
---->这样,目录E:\ssl 下会生成两个文件 www.abc.com .csr 和 www.abc.com.key 。
3.2 证书生成
Certificates Wizard
---> 输入域名,如“www.abc.com”
---> Please submit your Certificate Signing Request (CSR): 选择 Generated by Myself (.cer PEM format certificate) ,将3.1中生成的文件www.abc.com.csr的内容复制在框中。
---》提交(submit)
3.3证书下载
Tool Box --》 Certificate List --》选择域名www.abc.com 中对应的Retrieve进行下载---》将下载中的 NginxServer.zip中的内容提取出来(1_www.abc.com_bundle.crt)
3.4 PFX文件生成
Tool Box --》 Create PKCS#12(PFX)File
-----> Enter Private Key : 填入3.1中生成的key的内容,即www.abc.com.key 。
------>Enter Certificate : 填入3.3中下载的第二个crt文件中的内容,即1_ www.abc.com_bundle.crt.crt 。
------> Provide a password : 填入3.1中自定义输入密码即可。
---- 》提交 ----》下载对应的pfx文件 (下载下来的是.p12为后缀的文件,可以将后缀名修改为.pfx)
3.5 利用openssl进行转化:
openssl pkcs12 -in www.abc.com .pfx -nodes -out www.abc.com .pem # 生成明文所有内容(提示输入3.1中的密码)
openssl rsa -in
www.abc.com
.pem -out
www.abc.com
.key # 取 key 文件
openssl x509 -in
www.abc.com
.pem -out
www.abc.com
.crt # 取证书
3.6将3.5中生成的key和crt文件放在nginx目录下的htm下(自己看着放就好,我这里nginx的目录为: D:\nginx-1.10.1)
3.6将3.5中生成的key和crt文件放在nginx目录下的htm下(自己看着放就好,我这里nginx的目录为: D:\nginx-1.10.1)
配置参考如下:
=======================================
#多个https站点,需要添加一下两个选项
server_names_hash_max_size 512;
3.7重启nginx就可以生效
nginx -s reload
=======================================
#多个https站点,需要添加一下两个选项
server_names_hash_max_size 512;
server_names_hash_bucket_size 128;
upstream myServer1 {
server 127.0.0.1:7000 weight=1; #第1个测试网站
}
upstream myServer2 {
server 127.0.0.1:7001 weight=1; #第2个测试网站
}
# HTTPS server
#
server {
listen 443;
server_name www.abc.com;
# ssl_certificate ;
# ssl_certificate_key cert.key;
ssl on ;
ssl_certificate /nginx-1.10.1/html/
www.abc.com
.com.crt; ##该证书中包括两个域名的证书(www.abc.com和www.def.com;也可以各个证书单独分开)
ssl_certificate_key /nginx-1.10.1/html/
www.abc.com
.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
proxy_pass http://myServer1; ;
#设置主机头和客户端真实地址,以便服务器获取客户端真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#limit_req zone=allips burst=5 nodelay;
}
}
#
server {
listen 443;
server_name www.def.com;
# ssl_certificate ;
# ssl_certificate_key cert.key;
ssl on ;
ssl_certificate /nginx-1.10.1/html/
www.abc.com
.com.crt;
ssl_certificate_key /nginx-1.10.1/html/
www.abc.com
.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
proxy_pass http://myServer2; ;
#设置主机头和客户端真实地址,以便服务器获取客户端真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#limit_req zone=allips burst=5 nodelay;
}
}
========================================
3.7重启nginx就可以生效
nginx -s reload