参考:如何利用中继证书(凭证)建立服务器证书
地址:https://qingmu.blog.csdn.net/article/details/108225569?spm=1001.2014.3001.5502
目录
- 建立服务器证书的前提是要建立中继证书
- 建立服务器证书的具体步骤
- 1、建立一个目录,存放所有服务器证书有关的资料
- 2、填写Open SSL的配置文件
- 3、在服务器凭证目录产生凭证的私钥
- 4、在服务器凭证目录产生服务器凭证的凭证签发申请档
- 5、使用中继凭证去签发服务器凭证的凭证签发申请档, 产生客户端的凭证
- 6、检查签发的中继凭证是否无误.
- 7、确认服务器凭证的完整性, 需要做完整的串链检查, 需要使用含有根凭证的凭证串链.
- 8、产生服务器凭证的凭证串链.
- 9、服务器证书建立完成
建立服务器证书的前提是要建立中继证书
参照之前博文:
自建根证书详解
中继证书建立详解
并且需要安装openssl库:
sudo apt-get install openssl
建立服务器证书的具体步骤
本实验是在根证书和中继证书的前提下完成的,可参考根证书的建立和中继证书的建立
1、建立一个目录,存放所有服务器证书有关的资料
输入命令(注意路径哦):
mkdir server
cd server
2、填写Open SSL的配置文件
文件名:openssl_csr.cnf
路径:server目录下
填充内容:
[ req ]
# req 工具需要的參數.
default_bits = 2048
distinguished_name = req_distinguished_name
string_mask = utf8only
default_md = sha256[ req_distinguished_name ]
# 产生证书时要输入的资料说明.
countryName = Country Name (2 letter code)
stateOrProvinceName = State or Province Name
localityName = Locality Name
0.organizationName = Organization Name
organizationalUnitName = Organizational Unit Name
commonName = Common Name
emailAddress = Email Address
3、在服务器凭证目录产生凭证的私钥
文件名:server.key.pem
路径:server目录下
输入命令:
openssl genrsa -aes256 -out server.key.pem 4096
会提示输入私钥的密码, 例如是 john123
Enter pass phrase for server.key.pem:john123
再次输入密码:
Verifying - Enter pass phrase for server.key.pem:john123
更改私钥的权限为只读:
chmod 400 server.key.pem
4、在服务器凭证目录产生服务器凭证的凭证签发申请档
输入命令:
openssl req -config openssl_csr.cnf -new -sha256 -key server.key.pem -out server.csr.pem
会提示输入服务器证书的私钥的密码, 也就是 john123
Enter pass phrase for server.key.pem:john123# 接着输入证书拥有者的信息
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank For some fields there will be a default value,
If you enter '.', the field will be left blank.# 所在国家的缩写, 2 个字母
Country Name (2 letter code) []:DE
# 所在的州或省.
State or Province Name []:Bayern
# 所在的城市.
Locality Name []:Munich
# 所在的公司.
Organization Name []:John Ltd
# 所在的公司的单位.
Organizational Unit Name []:John Ltd Web Server
# 证书名称
Common Name []:www.john.com
# 邮箱
Email Address []:john@local
5、使用中继凭证去签发服务器凭证的凭证签发申请档, 产生客户端的凭证
在中继证书目录下操作
cd ../intermediate
签发凭证签发申请档, 有效期限是 3650 天.
输入命令:
openssl ca -config openssl_intermediate_ca.cnf -extensions server_cert -days 365 -notext -md sha256 -in ../server/server.csr.pem -out ../server/server.cert.pem
# 会提示需要输入根凭证的私钥密码, 也就是 bob123
Enter pass phrase for /ca/intermediate/private/intermediate_ca.key.pem:bob123# 接著会显示要签发的凭证签发申请档的内容.
Check that the request matches the signature
Signature ok
Certificate Details:
...
# 并询问是否签发, 输入 y
Sign the certificate? [y/n]:y
# 以及询问是否纪录签发的凭证到资料库 (index.txt, serial), 输入 y
1 out of 1 certificate requests certified, commit? [y/n]y
变更签发的凭证的存取权限为只读
输入命令:
chmod 444 ../server/server.cert.pem
6、检查签发的中继凭证是否无误.
输入命令:
openssl x509 -noout -text -in ../server/server.cert.pem
# 使用的算法
Signature Algorithm: sha256WithRSAEncryption# 公钥的长度
Subject Public Key Info:Public-Key: (4096 bit)# 有效日期.
Validity:Not Before: Aug 4 23:59:15 2017 GMTNot After : Aug 4 23:59:15 2018 GMT# 主旨 (John 的资料).
Subject: C=DE, ST=Bayern, O=John Ltd, OU=John Ltd Web Server, CN=www.john.com/emailAddress=john@local# 签发者 (Bob 的资料).
Issuer: C=US, ST=California, O=Bob Ltd, OU=Bob Ltd Certificate Authority, CN=Bob Ltd Intermediate CA/emailAddress=bob@local
7、确认服务器凭证的完整性, 需要做完整的串链检查, 需要使用含有根凭证的凭证串链.
输入命令:
openssl verify -CAfile chain/chain.cert.pem ../server/server.cert.pem
显示 OK 表示正确.
…/server/server.cert.pem: OK
8、产生服务器凭证的凭证串链.
回到服务器证书目录里
cd ../server
产生证书串链:
cat server.cert.pem ../intermediate/chain/chain.cert.pem > server_chain.cert.pem
变更串链的读取权限为只读:
chmod 444 server_chain.cert.pem