美文网首页
随笔08-使用openssl生成证书

随笔08-使用openssl生成证书

作者: 杨强AT南京 | 来源:发表于2019-01-25 16:05 被阅读59次

网上看到的一个生成证书的文档,mark一下。
签名一般分成两个过程:
  1. 生成CA证书
  2.用CA证书对服务器或者客户端证书签名
如果在私有模式中通信,可以自己生成证书,并签名。
如果想对外使用,需要购买第三方机构发放的全球CA证书。

下面证书信息说明:
  C-----国家(Country Name)
  ST----省份(State or Province Name)
  L----城市(Locality Name)
  O----公司(Organization Name)
  OU----部门(Organizational Unit Name)
  CN----产品名(Common Name)
  emailAddress----邮箱(Email Address)

一、 CA证书及密钥生成

方法一----直接生成CA密钥及其自签名证书
如果想以后读取私钥文件ca_rsa_private.pem时不需要输入密码,亦即不对私钥进行加密存储,那么将-passout pass:123456替换成-nodes

openssl req -newkey rsa:2048 -passout pass:123456 -keyout ca_rsa_private.pem -x509 -days 365 -out ca.crt -subj "/C=CN/ST=GD/L=SZ/O=COM/OU=NSP/CN=CA/emailAddress=youremail@qq.com"

方法二----分步生成CA密钥及其自签名证书

openssl genrsa -aes256 -passout pass:123456 -out ca_rsa_private.pem 2048
openssl req -new -x509 -days 365 -key ca_rsa_private.pem -passin pass:123456 -out ca.crt -subj "/C=CN/ST=GD/L=SZ/O=COM/OU=NSP/CN=CA/emailAddress=youremail@qq.com"

二、服务器证书及密钥生成

2.1 生成服务器密钥及待签名证书

方法一---直接生成
如果想以后读取私钥文件server_rsa_private.pem时不需要输入密码,亦即不对私钥进行加密存储,那么将-passout pass:server替换成-nodes

openssl req -newkey rsa:2048 -passout pass:server -keyout server_rsa_private.pem  -out server.csr -subj "/C=CN/ST=GD/L=SZ/O=COM/OU=NSP/CN=SERVER/emailAddress=youremail@qq.com"

方法二---分两步生成

openssl genrsa -aes256 -passout pass:server -out server_rsa_private.pem 2048
openssl req -new -key server_rsa_private.pem -passin pass:server -out server.csr -subj "/C=CN/ST=GD/L=SZ/O=COM/OU=NSP/CN=SERVER/emailAddress=youremail@qq.com"
2.2 使用CA证书及密钥对服务器证书进行签名:
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca_rsa_private.pem -passin pass:123456 -CAcreateserial -out server.crt
2.3 将加密的RSA密钥转成未加密的RSA密钥,避免每次读取都要求输入解密密码

密码就是生成私钥文件时设置的passout、读取私钥文件时要输入的passin,比如这里要输入“server”

openssl rsa -in server_rsa_private.pem -out server_rsa_private.pem.unsecure

三、客户端证书及密钥生成

3.1 生成客户端密钥及待签名证书

方法一----直接生成
如果想以后读取私钥文件client_rsa_private.pem时不需要输入密码,亦即不对私钥进行加密存储,那么将-passout pass:client替换成-nodes

openssl req -newkey rsa:2048 -passout pass:client -keyout client_rsa_private.pem -out client.csr -subj "/C=CN/ST=GD/L=SZ/O=COM/OU=NSP/CN=CLIENT/emailAddress=youremail@qq.com"

方法二----分两步生成:

openssl genrsa -aes256 -passout pass:client -out client_rsa_private.pem 2048
openssl req -new -key client_rsa_private.pem -passin pass:client -out client.csr -subj "/C=CN/ST=GD/L=SZ/O=COM/OU=NSP/CN=CLIENT/emailAddress=youremail@qq.com"
3.2 使用CA证书及密钥对客户端证书进行签名:
openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca_rsa_private.pem -passin pass:123456 -CAcreateserial -out client.crt
3.3 将加密的RSA密钥转成未加密的RSA密钥,避免每次读取都要求输入解密密码

密码就是生成私钥文件时设置的passout、读取私钥文件时要输入的passin,比如这里要输入“client”

openssl rsa -in client_rsa_private.pem -out client_rsa_private.pem.unsecure

相关文章

网友评论

      本文标题:随笔08-使用openssl生成证书

      本文链接:https://www.haomeiwen.com/subject/hnomjqtx.html