自签名双向认证证书
一 根证书生成
1. 生成 root 私钥 key
命令:
openssl genrsa -des3 -out root_pass.key 2048
运行后提示输入密码,例子中密码为:123456
输出:
~/Desktop/tmp » openssl genrsa -des3 -out root_pass.key 2048 lin@lin-mac
Generating RSA private key, 2048 bit long modulus
.........................+++++
..............................................................+++++
e is 65537 (0x10001)
Enter pass phrase for root_pass.key:
Verifying - Enter pass phrase for root_pass.key:
2. 去除 root 私钥中的密码(可选)
命令:
openssl rsa -in root_pass.key -out root.key
这一步是可选的,要是不去除密码的话,下面用到的地方就需要输入密码了
3. 生成 root 证书签名请求 csr
openssl req -new -key root.key -out root.csr -subj "/C=CN/ST=Jiangsu/L=Wuxi/O=MOT/OU=web/CN=xulinfeng.com"
subj 参数说明:
字段 | 含义 | 示例 |
---|---|---|
/C= | Country 国家 | CN |
/ST= | State or Province 省 | Jiangsu |
/L= | Location or City 城市 | Wuxi |
/O= | Organization 组织或企业 | cetc |
/OU= | Organization Unit 部门 | dev |
/CN= | Common Name 域名或 IP | xulinfeng.com |
其他可以随便填,但 CN 必须为你网站的域名
4. 生成 root 证书 crt
openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650
二 服务端证书生成
1. 创建服务端私钥 key
openssl genrsa -des3 -out server_pass.key 2048
运行后提示输入密码,例子中密码为:qweqwe
2. 去除服务端私钥中的密码(可选)
命令:
openssl rsa -in server_pass.key -out server.key
这一步是可选的,要是不去除密码的话,下面用到的地方就需要输入密码了
3. 生成服务端证书签名请求 csr
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Jiangsu/L=Wuxi/O=MOT/OU=web/CN=xulinfeng.com"
4. 生成服务端证书 crt
openssl x509 -req -in server.csr -out server.crt -signkey server.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650
如果需要只需要部署服务端证书端话,就可以结束了。拿着 server.crt 公钥和 server.key 私钥部署在服务器上,然后解析域名到改服务器指向到 IP,证书就部署成功了。
三 客户端证书生成
如果需要做双向验证的,也就是服务端要验证客户端证书的情况。那么需要在同一个根证书下再生成一个客户端证书
1. 创建客户端私钥 key
openssl genrsa -des3 -out client_pass.key 2048
运行后提示输入密码,例子中密码为:clientclient
2. 去除客户端私钥中的密码(可选)
命令:
openssl rsa -in client_pass.key -out client.key
这一步是可选的,要是不去除密码的话,下面用到的地方就需要输入密码了
3. 生成客户端证书签名请求 csr
openssl req -new -key client.key -out client.csr -subj "/C=CN/ST=Jiangsu/L=Wuxi/O=MOT/OU=web/CN=xulinfeng.com"
4. 生成客户端证书 crt
openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650
5. 生成客户端集成证书 pkcs12
方便浏览器或者 http 客户端访问
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
运行后提示输入密码,例子中密码为:clientclient