使用Openssl创建私有CA中心的整体步骤:
成都创新互联专注于歙县网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供歙县营销型网站建设,歙县网站制作、歙县网页设计、歙县网站官网定制、微信小程序开发服务,打造歙县网络公司原创品牌,更为您提供歙县网站排名全网营销落地服务。1.1、准备root证书放的地儿专门保存私钥和证书
1.2、必须使用一个配置文件给openssl来使用,保存的名字位于/root/ca/openssl.cnf,附:
1.3、创建root CA的私钥key, 使用aes256加密key文件,私钥文件为4096位。
# cd /root/ca
# openssl genrsa -aes256 -out private/ca.key.pem 4096
-------会提示让你输密码-------
# chmod 400 private/ca.key.pem
1.4、创建root CA的公钥certificate,使用私钥去生成公钥,失效日期设置长一点(eg:20 years)
# cd /root/ca
# openssl req -config openssl.cnf \
-key private/ca.key.pem \
-new -x509 -days 7300 -sha256 -extensions v3_ca \
-out certs/ca.cert.pem
------会提示你输入相关信息--------
# chmod 444 certs/ca.cert.pem
使用-config来指定我们之前下载的配置模板,否则将使用默认的模板,位于/etc/pki/tls/openssl.cnf
1.5、校验生成的公钥是否是我们想要的
#openssl x509 -noout -text -in certs/ca.cert.pem
2、生成intermediate pairs,intermediate CA可以代表root CA去给第三方做签名,root CA签名intermediate CA, 结果会形成一个信任链chain of trust
2.1、准备目录
# mkdir /root/ca/intermediate
# cd /root/ca/intermediate
# mkdir certs crl csr newcerts private
# chmod 700 private
# touch index.txt
# echo 1000 > serial
相比root ca多了一个csr目录,主要用于保存证书签名请求。
# echo 1000 > /root/ca/intermediate/crlnumber
创建一个crlnumber文件,主要用于证书吊销列表的追踪。
2.2、准备配置文件为/root/ca/intermediate/openssl.cnf, 配置文件模板为https://jamielinux.com/docs/openssl-certificate-authority/appendix/intermediate-configuration-file.html
主要有五个选项需要变一下:
[ CA_default ]
dir = /root/ca/intermediate
private_key = $dir/private/intermediate.key.pem
certificate = $dir/certs/intermediate.cert.pem
crl = $dir/crl/intermediate.crl.pem
policy = policy_loose
root.ca中的policy是policy_strict是指它只签名intermediate,而intermediate是loose是允许他去签名更多的其他证书。
2.3、创建intermediate私钥,和root ca一样的命令
# cd /root/ca
# openssl genrsa -aes256 \
-out intermediate/private/intermediate.key.pem 4096
-----提示输入保护密码----
# chmod 400 intermediate/private/intermediate.key.pem
2.4、使用intermediate 私钥去创建一个certificate signing request (CSR)
# cd /root/ca
# openssl req -config intermediate/openssl.cnf -new -sha256 \
-key intermediate/private/intermediate.key.pem \
-out intermediate/csr/intermediate.csr.pem
---------会输出很多让你输入的信息,除了Common Name和root ca时不一样,其他最好保持一致----------
注意以上使用的是intermediate的配置文件,以下则是使用root ca 的配置文件,with v3_intermediate_ca extension去签名以上生成的CSR,并生成签名后的intermediate公钥证书:
# cd /root/ca
# openssl ca -config openssl.cnf -extensions v3_intermediate_ca \
-days 3650 -notext -md sha256 \
-in intermediate/csr/intermediate.csr.pem \
-out intermediate/certs/intermediate.cert.pem
# chmod 444 intermediate/certs/intermediate.cert.pem
以上命令完后,会在运行openssl ca命令时的目录(/root/ca)下的index.txt下生成类似以下信息,不要删除:V 250408122707Z 1000 unknown ... /CN=Alice Ltd Intermediate CA
2.5、验证intermediate证书的细节是否正确:
# openssl x509 -noout -text \
-in intermediate/certs/intermediate.cert.pem
然后再验证intermediate证书的是否被root ca正确签名:
# openssl verify -CAfile certs/ca.cert.pem \
intermediate/certs/intermediate.cert.pem
2.6、创建一个证书链文件,主要用于一个应用程序,例如浏览器要认证intermediate证书的有效签发机构是不是root ca(假设浏览器信任root ca)
# cat intermediate/certs/intermediate.cert.pem \
certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem
# chmod 444 intermediate/certs/ca-chain.cert.pem
证书链文件必须包含root ca的certification,并且在每台内部客户端安装root公钥证书.
3、利用intermediate CA去签名平时使用的server和client,如果是第三方给你的话,人家只需要给你CSR即可,你给CSR签名就行了。以下是从自己内部的角度来一步一步操作。
3.1、在server端创建key私钥,尽管root 和 intermediate pair是4096bit,但是给server和client签名时最好是2048bit,减少TLS握手时性能压力。
# cd /root/ca
# openssl genrsa -aes256 \
-out intermediate/private/www.example.com.key.pem 2048
# chmod 400 intermediate/private/www.example.com.key.pem
如果使用apache,每次启动都要输入保护私钥的密码,如果不想输入密码,就去掉-aes256。
3.2、使用key私钥去生成一个CSR证书(说白了就是未签名的公钥证书),
# cd /root/ca
# openssl req -config intermediate/openssl.cnf \(使用intermediate的私钥去生成server的公钥?错了吧,也许这里面的intermediate相当于第三方自己的内部CA,pending....)
-key intermediate/private/www.example.com.key.pem \
-new -sha256 -out intermediate/csr/www.example.com.csr.pem
----输出一堆信息让你填,你不需要和intermediate的相对应,但common name时填写网站全名,如果是client的话,最好填邮箱信息-----
3.3、使用intermediate证书去签名server或client的CSR并生成签名后证书,证书通常一年
# cd /root/ca
# openssl ca -config intermediate/openssl.cnf \
-extensions server_cert -days 375 -notext -md sha256 \
-in intermediate/csr/www.example.com.csr.pem \
-out intermediate/certs/www.example.com.cert.pem
# chmod 444 intermediate/certs/www.example.com.cert.pem
如果是去签名一个client,则改成-extensions usr_cert
最后会在intermediate/index.txt文件中生成一条类似于如下信息: V 160420124233Z 1000 unknown ... /CN=www.example.com
3.4、校验生成的证书信息是否正确
# openssl x509 -noout -text \
-in intermediate/certs/www.example.com.cert.pem
3.5、使用之前intermediate时创建的证书链文件校验是否ok
# openssl verify -CAfile intermediate/certs/ca-chain.cert.pem \
intermediate/certs/www.example.com.cert.pem
3.6、部署证书,这里假设是apache,以下文件需要
ca-chain.cert.pem
www.example.com.key.pem
www.example.com.cert.pem
如果是给第三方做签名的话,只需要给他们ca-chain.cert.pem和
www.example.com.cert.pem,因为他们让你做签名时,不会把私钥给你的。
4、证书撤消列表CRLs,主要用来客户端程序(eg: IE)使用CRL去验证一个证书是否被撤消,服务器也可以使用CRLs限制拥有无效证书的客户端连接。目前CRLs这种方式已经被Online Certificate Status Protocol (OCSP)取代,所以这里喜新不喜旧。
4.1、OCSP准备配置文件,在intermediate CA的配置文件中指定,因为要使用intermediate CA做签名
[ server_cert ]
# ... snipped ...
authorityInfoAccess = OCSP;URI:http://ocsp.example.com
# cd /root/ca
# openssl req -config intermediate/openssl.cnf -new -sha256 \
-key intermediate/private/ocsp.example.com.key.pem \
-out intermediate/csr/ocsp.example.com.csr.pem
-----输出很多信息需要填,最好和要使用的签名CA时的信息一样,Common name是全域名------
使用intermediate CA去签名该CSR:
# openssl ca -config intermediate/openssl.cnf \
-extensions ocsp -days 375 -notext -md sha256 \
-in intermediate/csr/ocsp.example.com.csr.pem \
-out intermediate/certs/ocsp.example.com.cert.pem
验证生成的证书含有正确的x509 v3 extension:
# openssl x509 -noout -text \
intermediate/openssl.cnf \(又出现了,为什么生成server证书还要intermediate配置文件?没谷歌到)
撤消证书动作,谁签发谁撤消:
# openssl ca -config intermediate/openssl.cnf \
-revoke intermediate/certs/test.example.com.cert.pem
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章标题:openssl创建CA详细操作手册-创新互联
文章分享:http://scpingwu.com/article/dsdods.html