HTTPS证书验证流程及SSL证书生成步骤【附nginx开启https配置】
来源:互联网 发布:怎么在手机淘宝买彩票 编辑:程序博客网 时间:2024/06/02 19:41
------------------------------------------------------------
HTTPS证书验证流程(极简化版)
1.客户端向服务端请求证书(server.crt)
2.服务端下发证书(server.crt)
3.客户端用预制的受信任机构的证书(ca.crt)来验证服务端下发的证书(server.crt)是否合法,并且还会校验下发下来的证书里的域名与要请求的域名是否一致
【以下步骤开启双向验证后才会触发】
4. 客户端选择一个由受信任的机构(ca.crt)颁发的证书(client.crt)发送给服务端
5.服务端用预制的受信任机构的证书(ca.crt)来验证客户端传来的证书(client.crt)是否合法
-----------------------------------------------------------------
以下是证书生成步骤及说明:
------------------------CA证书-------------------------------
1. 创建根证书密钥文件(自己做CA)ca.key:openssl genrsa -des3 -out ca.key 2048
#去除密码
openssl rsa -in ca.key -out ca.key
2. 创建根证书的申请文件ca.csr:
openssl req -new -key ca.key -out ca.csr
3. 创建一个自当前日期起为期十年的根证书ca.crt【用来签名其它证书,并配置在客户端信任列表,如果开启双向验证,也需要配置在服务端】:
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey ca.key -in ca.csr -out ca.crt
------------------------Server端要下发的证书---------------------------------
4. 创建服务器证书密钥server.key:
openssl genrsa -des3 -out server.key 2048
#去除密码
openssl rsa -in server.key -out server.key
5. 创建服务器证书的申请文件server.csr:
openssl req -new -key server.key -out server.csr
6. 创建自当前日期起有效期为期两年的服务器证书server.crt【配置在服务端,将会在客户端请求时下发给客户端】:
openssl x509 -req -days 730 -sha1 -extensions v3_req -CA ca.crt -CAkey ca.key -CAserial ca.srl -CAcreateserial -in server.csr -out server.crt
------------------------Client端要下发的证书【开启双向验证后才需要】---------------------------------
7. 创建客户端证书密钥文件client.key:
openssl genrsa -des3 -out client.key 2048
#去除密码
openssl rsa -in client.key -out client.key
8. 创建客户端证书的申请文件client.csr:
openssl req -new -key client.key -out client.csr
9. 创建一个自当前日期起有效期为两年的客户端证书client.crt【配置在客户端】:
openssl x509 -req -days 730 -sha1 -extensions v3_req -CA ca.crt -CAkey ca.key -CAserial ca.srl -CAcreateserial -in client.csr -out client.crt
------------------------各种格式转换---------------------------------
a. crt+key转pfx【pfx是证书安装包,方便在电脑上直接双击按向导安装证书】
openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx
b. pfx转化为pem【curl需要pem格式文件】
openssl pkcs12 -in client.pfx -nodes -out client.pem
c. crt+key转p12【apache的cxf客户端支持jks和p12证书】
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
d. crt转jks【jks支持存放信任证书,而pkcs12不支持,所以tomcat环境下配置ca只能使用jks才能保证ca密钥不泄露】
keytool -import -v -trustcacerts -storepass defaultpwd -keypass defaultpwd -file ca.crt -keystore ca_only.jks
---------------------------------------------------------
关于创建证书的申请文件(.csr)时的输入内容
Country Name (2 letter code) [AU]:CN【国家代号,中国输入CN】
State or Province Name (full name) [Some-State]:BeiJing【省的全名,拼音】
Locality Name (eg, city) []:BeiJing【市的全名,拼音】
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp.【公司英文名】
Organizational Unit Name (eg, section) []: 【可以不输入】
Common Name (eg, YOUR name) []:【对于server.csr需要输入网站的域名以作校验,其余的csr可随意填写】
Email Address []:admin@mycompany.com【电子邮箱,可随意填】
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:【可以不输入】
An optional company name []:【可以不输入】
-----------------------nginx开启https配置--------------------------
server {#上线请将端口改为默认443listen 8443 ssl;server_name your_domain;index index.html index.htm;ssl on;ssl_certificate /your/certs/path/server.crt;ssl_certificate_key /your/certs/path/server.key;#以下两行注释用来开启双向验证#ssl_client_certificate /your/certs/path/ca.crt;#ssl_verify_client on;ssl_session_timeout 5m;location /your_https_path/ { proxy_pass_header Server; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://your_http_host:port/your_http_path/; }}
-------------------------tomcat开启https配置【clientAuth用来开启双向验证】-----------------------------------
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="true" sslProtocol="TLS" keystoreType="PKCS12" keystoreFile="c:/server/certs/path/server.p12" keystorePass="defaultpwd" truststoreType="JKS" truststoreFile="c:/ca/certs/path/ca_only.jks" truststorePass="defaultpwd" />
阅读全文
0 0
- HTTPS证书验证流程及SSL证书生成步骤【附nginx开启https配置】
- nginx配置ssl双向验证 nginx https ssl证书配
- Nginx 配置 SSL 证书 + HTTPS 站点小记
- Nginx + https + 免费SSL证书配置指南
- Nginx 配置 SSL 证书 + HTTPS 站点
- Nginx + https + 免费SSL证书配置指南
- Nginx + https + 免费SSL证书配置指南
- Nginx配置SSL证书部署HTTPS网站
- Nginx + https + 免费SSL证书配置指南
- Nginx配置SSL证书部署HTTPS网站
- Nginx配置SSL证书部署HTTPS网站
- Nginx + https + 免费SSL证书配置指南
- Nginx配置SSL证书部署HTTPS网站
- Nginx配置SSL证书部署HTTPS网站
- Nginx配置SSL证书部署HTTPS网站
- https证书申请 nginx ssl配置
- https搭建:ubuntu nginx配置 SSL证书
- Nginx配置SSL证书部署HTTPS网站
- 【模板】并查集
- poj 2965 dfs+枚举
- Zend Framework安装
- JDBC—总结(2).Dao模式
- 优先级队列PriorityQueue
- HTTPS证书验证流程及SSL证书生成步骤【附nginx开启https配置】
- JAVA基础(二)
- React 组件性能优化
- Caffe
- Codeforces Round #443 (Div. 2) C. Short Program 【模拟】
- JSP的学习(6)——九大隐式对象及其out对象
- C++11中的右值引用
- React高阶组件应用
- Eclipse中安装Java Swing图形界面开发插件windowbuilder