生成自签证书脚本
go
#!/bin/bash
KEY_LENGTH=4096
DAYS=3650
ST=DongBei
L=LiaoNing
O=NASA
OU=NASA
CN=*.dongbei.nasa.edu.cn
EMAIL=xxx@qq.com
# 生成私有证书密钥
openssl genrsa -out server.key ${KEY_LENGTH}
# 生成证书请求文件
# 警告:一定要用双引号(单引号不解析变量)
openssl req -new -x509 -key server.key -out ca.crt -days ${DAYS} \
-subj "/C=CN/ST=${ST}/L=${L}/O=${O}/OU=${OU}/CN=${CN}/emailAddress=${EMAIL}"
# 生成证书签名请求文件(CSR)
# 警告:一定要用双引号(单引号不解析变量)
openssl req -new -key server.key -out server.csr \
-subj "/C=CN/ST=${ST}/L=${L}/O=${O}/OU=${OU}/CN=${CN}/emailAddress=${EMAIL}"
# 使用自签名CA证书签发SSL证书
openssl x509 -req -days ${DAYS} -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
字段解释
这个subject参数指定了证书的DN(Distinguished Name)信息。DN包含证书主体的身份信息,格式为一系列键值对,使用/分隔。每个键值对使用=号连接。这个subject参数包含的键值对有:- /C=CN:国家名称是CN(China)
-
/ST=
ZheJiang
:省份是DongBei
-
/L=
HangZhou
:城市是LiaoNing
-
/O=
NASA
:组织名称是NASA
-
/OU=
NASA
:组织单元名称也是NASA
-
/CN=
*.dongbei.nasa.edu.cn
:公共名称(Common Name)是*.dongbei.nasa.edu.cn
-
/emailAddress=hh@qq.com:电子邮箱是hh@qq.com证书的DN信息遵循X.500标准。常用的DN字段及其含义有:- C:国家(Country)
-
ST:省/市/自治区(
State/Province
) -
L:地点(
Locality
) -
O:组织(
Organization
) -
OU:组织单元(
Organization Unit
) -
CN:公共名称(
Common Name
),主机名或网站 -
emailAddress:电子邮箱地址证书的DN字段内容并不影响证书的功能,但具有重要的识别作用。真实的DN信息可以帮助用户判断证书的可信度。