openssl x509 -text -noout -in [证书]
参数说明:
-text
: 以文本形式打印证书信息-noout
: 不输出证书内容-in [证书]
: 指定需要查看的证书示例:
openssl x509 -text -noout -in test.crt
openssl x509 -purpose -noout -in [证书]
参数说明:
-purpose
: 指定操作为查看证书用途-noout
: 不输出证书内容-in [证书]
: 指定需要查看的证书示例:
openssl x509 -purpose -noout -in test.crt
openssl verify -CAfile [CA证书] [证书]
参数说明:
-CAfile [CA证书]
: 指定 CA 证书[证书]
: 指定需要验证的证书示例:
openssl verify -CAfile ca.crt server.crt
openssl req -new -utf8 [证书算法] -key [私钥] -passin pass:[私钥密码] -config [配置文件] -out [证书请求文件]
参数说明:
-new
: 指定操作为新证书请求-utf8
: 指定输入字符串使用 UTF8 编码,不指定时默认为 ASCII 编码[证书算法]
: 指定证书使用的算法-key [私钥]
: 指定证书使用的私钥-passin pass:[私钥密码]
: 当私钥存在密码时,指定私钥密码-config [配置文件]
: 指定证书信息配置文件,不指定时需按提示输入证书信息-out [证书请求文件]
: 指定生成的证书请求文件证书信息说明:
Country Name
: 国家名(代码)State or Province Name
: 一级行政区名称(全名)Locality Name
: 二级行政区名称(全名)Organization Name
: 组织名称Organizational Unit Name
: 组织部门名称Common Name
: 域名Email Address
: 邮箱配置文件说明:
[ req ]
distinguished_name = 请求名称
prompt = 是否提示
string_mask = 字符串编码
#default, pkix, utf8only, nombstr
[ 请求名称 ]
C = 国家名(代码)
ST = 一级行政区名称(全名)
L = 二级行政区名称(全名)
O = 组织名称
OU = 组织部门名称
CN = 域名
emailAddress = 邮箱
示例:
openssl req -new -utf8 -sha256 -key server.key -out server.req
vim hty1024_ca_req.cnf
[ req ]
distinguished_name = hty1024_ca_req
prompt = no
string_mask = utf8only
#default, pkix, utf8only, nombstr
[ hty1024_ca_req ]
C = CN
ST = ShangHai
L = ShangHai
O = HTY1024
OU = HTY1024
CN = www.hty1024.com
emailAddress = test@hty1024.com
openssl req -new -utf8 -sha256 -key server.key -config hty1024_ca_req.cnf -out server.req
openssl req -verify -noout -in [证书请求文件]
参数说明:
-verify
: 指定操作为验证-noout
: 不输出证书请求文件内容-in [证书请求文件]
: 指定证书请求文件示例:
openssl req -verify -noout -in server.req
openssl x509 -req -signkey [私钥文件] -passin pass:[私钥密码] -CA [CA证书] -CAkey [CA私钥] -CAcreateserial -days [证书有效期] -in [证书请求文件] -out [证书文件]
参数说明:
-req
: 指定操作为签发证书-signkey [私钥文件]
: 指定私钥文件-passin pass:[私钥密码]
: 若私钥有密码,则需指定密码-CA [CA证书]
: 指定 CA 证书-CAkey [CA私钥]
: 指定 CA 私钥-CAcreateserial
: 创建CA序列号文件-days [证书有效期]
: 指定证书有效期,单位为天-in [证书请求文件]
: 指定证书请求文件-out [证书文件]
: 指定证书文件示例:
openssl x509 -req -signkey ca.key -CAcreateserial -days 3650 -in ca.req -out ca.crt
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 -in server.req -out server.crt
1. 生成 ca 私钥
执行以下命令生成秘钥,需按提示输入密码
openssl genrsa -des3 -out ca.key 4096
参数说明:
-des3
: 指定加密算法,此处使用 des3
算法加密私钥-out ca.key
: 指定生成的秘钥文件名,此处为 ca.key
4096
: 指定生成的密钥大小(单位为位),此处为 4096
2. 生成 ca 证书
执行以下命令,需按提示输入ca私钥的密码
openssl req -new -x509 -sha256 -key ca.key -out ca.crt -days 3650 -subj '/C=CN/ST=ShangHai/O=hty1024/CN=hty1024.com'
参数说明:
-new
: 指定新请求-x509
: 指定输出X.509证书结构而不是证书请求-sha256
: 指定证书哈希函数,此处为 sha256
-key ca.key
: 指定证书使用的私钥,此处为 ca.key
-out ca.crt
: 指定生成的证书文件名,此处为 ca.crt
-days 3650
: 指定证书有效期(单位为天)),此处为 3650
-subj 证书信息
: 指定证书相关信息,具体信息如下:
C
: 国家名称缩写ST
: 州或省名称L
: 城市或区域名称O
: 组织名(或公司名)OU
: 组织单位名称(或部门名)CN
: 服务器域名/证书拥有者名称3. 查看 ca 证书
执行以下命令查看证书
openssl x509 -noout -text -in ca.crt
参数说明:
-noout
: 不输出为文件,直接显示输出内容-in
: 指定证书名称,此处为 ca.crt
4. 生成网站私钥
执行以下命令,生成网站私钥,按提示输入密码
openssl genrsa -des3 -out server.key 2048
5. 生成网站证书
执行以下命令,生成网站证书,按提示输入网站私钥及ca秘钥的密码
openssl req -new -x509 -sha256 -CA ca.crt -CAkey ca.key -key server.key -out server.crt -days 365 -subj '/C=CN/ST=ShangHai/O=hty1024/CN=hty1024.com'
参数说明:
-CA ca.crt
: 指定 ca 证书,此处为 ca.crt
-CAkey ca.key
: 指定 ca 私钥,此处为 ca.key
6. 客户端导入ca证书
在浏览器中导入 ca 证书,使得浏览器信任此 ca 签发的证书,从而不显示警告
不同浏览器导入方式不一样,建议参考浏览器文档,Edge
在 隐私、搜索和服务
- 安全性
- 管理证书
中导入 受信任的根证书颁发机构