使用OpenSSL生成自签名证书相关命令

在用于小范围测试等目的的时候,用户也可以自己生成数字证书,但没有任何可信赖的机构签名,此类数字证书称为自签名证书。证书一般采用X.509标准格式。下面通过OpenSSL相关命令介绍如何生成自签证书。

1. 生成自签名根证书(一级证书):

(1).产生长度为2048的rsa私钥root.key,PEM格式:

LD_LIBRARY_PATH=../lib ./openssl genrsa -out root.key 2048

(2).验证私钥root.key:执行结果如下图所示

LD_LIBRARY_PATH=../lib ./openssl rsa -in root.key -check

(3).创建根证书签名请求(Certificate Signing Request)文件root2.csr,PEM格式:输入以下命令回车后,需要依次填入相关信息,例子如下,每行的冒号后为需要填写的,若不填写则可直接回车跳过,采用默认值,如下图所示:

LD_LIBRARY_PATH=../lib ./openssl req -new -out root2.csr -key root.key

 也可以通过增加选项-subj来生成证书签名请求,命令如下:root.csr和root2.csr内容完全一致

LD_LIBRARY_PATH=../lib ./openssl req -new -out root.csr -key root.key -subj "/C=cn/ST=beijing/L=haidian/O=FBC/OU=test/CN=fengbingchun/emailAddress=fengbingchun@163.com"

(4).验证root.csr,查看证书签名请求详细信息:执行结果如下图所示

LD_LIBRARY_PATH=../lib ./openssl req -text -in root.csr -noout -verify

(5)创建根证书root.crt,PEM格式:执行结果如下图所示

LD_LIBRARY_PATH=../lib ./openssl x509 -req -in root.csr -out root.crt -signkey root.key -days 3650

(6).将root.crt由PEM格式转换到DER格式:

LD_LIBRARY_PATH=../lib ./openssl x509 -outform der -in root.crt -out root.der

(7).验证root.crt,查看证书详细信息:执行结果如下图所示

LD_LIBRARY_PATH=../lib ./openssl x509 -text -in root.crt -noout

(8).验证root.key, root.csr, root.crt是否具有相同的公钥:执行结果如下图所示,输出结果一致

LD_LIBRARY_PATH=../lib ./openssl rsa -modulus -in root.key -noout | LD_LIBRARY_PATH=../lib ./openssl sha256
LD_LIBRARY_PATH=../lib ./openssl req -modulus -in root.csr -noout | LD_LIBRARY_PATH=../lib ./openssl sha256
LD_LIBRARY_PATH=../lib ./openssl x509 -modulus -in root.crt -noout | LD_LIBRARY_PATH=../lib ./openssl sha256

2. 由自签名根证书颁发服务器端证书(二级证书):

(1).产生长度为2048的rsa私钥server.key,PEM格式:

LD_LIBRARY_PATH=../lib ./openssl genrsa -out server.key 2048

(2).验证私钥server.key:

LD_LIBRARY_PATH=../lib ./openssl rsa -in server.key -check

(3).创建服务器端证书签名请求server.csr, PEM格式:CN填写本地测试机的IP或域名

LD_LIBRARY_PATH=../lib ./openssl req -new -out server.csr -key server.key -subj "/C=cn/ST=beijing/L=haidian/O=Spring/OU=server_test/CN=10.4.96.33/emailAddress=Spring@server_test.com"

(4).验证server.csr,查看证书签名请求详细信息:

LD_LIBRARY_PATH=../lib ./openssl req -text -in server.csr -noout -verify

(5).创建服务器端证书server.crt,PEM格式:

LD_LIBRARY_PATH=../lib ./openssl x509 -req -in server.csr -out server.crt -signkey server.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650

(6).验证server.crt,查看证书详细信息:执行结果如下图所示,注意与root.crt的差异

LD_LIBRARY_PATH=../lib ./openssl x509 -text -in server.crt -noout

(7).将server.crt由PEM格式转换到DER格式:

LD_LIBRARY_PATH=../lib ./openssl x509 -outform der -in server.crt -out server.der

(8).验证server.key, server.csr, server.crt是否具有相同的公钥:

LD_LIBRARY_PATH=../lib ./openssl rsa -modulus -in server.key -noout | LD_LIBRARY_PATH=../lib ./openssl sha256
LD_LIBRARY_PATH=../lib ./openssl req -modulus -in server.csr -noout | LD_LIBRARY_PATH=../lib ./openssl sha256
LD_LIBRARY_PATH=../lib ./openssl x509 -modulus -in server.crt -noout | LD_LIBRARY_PATH=../lib ./openssl sha256

(9).使用根证书root.crt来校验服务器端证书server.crt:执行结果如下图所示

LD_LIBRARY_PATH=../lib ./openssl verify -CAfile root.crt server.crt

3. 由自签名根证书颁发客户端证书(二级证书):

(1).产生长度为2048的rsa私钥client.key,PEM格式:

LD_LIBRARY_PATH=../lib ./openssl genrsa -out client.key 2048

(2).验证私钥client.key:

LD_LIBRARY_PATH=../lib ./openssl rsa -in client.key -check

(3).创建客户端证书签名请求client.csr,PEM格式:

LD_LIBRARY_PATH=../lib ./openssl req -new -out client.csr -key client.key -subj "/C=cn/ST=beijing/L=haidian/O=Spring/OU=client_test/CN=Chun/emailAddress=test@client_test.com"

(4).验证client.csr,查看证书签名请求详细信息:

LD_LIBRARY_PATH=../lib ./openssl req -text -in client.csr -noout -verify

(5).创建客户端证书client.crt,PEM格式:

LD_LIBRARY_PATH=../lib ./openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650

(6).验证client.crt,查看证书详细信息:

LD_LIBRARY_PATH=../lib ./openssl x509 -text -in client.crt -noout

(7).将client.crt由PEM格式转换到DER格式:

LD_LIBRARY_PATH=../lib ./openssl x509 -outform der -in client.crt -out client.der

(8).验证client.key, client.csr, client.crt是否具有相同的公钥:

LD_LIBRARY_PATH=../lib ./openssl rsa -modulus -in client.key -noout | LD_LIBRARY_PATH=../lib ./openssl sha256
LD_LIBRARY_PATH=../lib ./openssl req -modulus -in client.csr -noout | LD_LIBRARY_PATH=../lib ./openssl sha256
LD_LIBRARY_PATH=../lib ./openssl x509 -modulus -in client.crt -noout | LD_LIBRARY_PATH=../lib ./openssl sha256

(9).使用根证书root.crt来校验客户端证书client.crt:执行结果如下图所示

LD_LIBRARY_PATH=../lib ./openssl verify -CAfile root.crt client.crt

GitHubhttps://github.com//fengbingchun/OpenSSL_Test

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值