openssl创建CA详细操作手册

使用Openssl创建私有CA中心的整体步骤:

成都创新互联公司主要从事做网站、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务枞阳,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

1、生成root ca,再根据roo.ca生成intermediate CAs,最佳实践是,不要让root.ca直接去签名,而是让intermediate CAs 去签名,生成root.ca的机器最好isolated,以免私钥丢失。

1.1、准备root证书放的地儿专门保存私钥和证书

mkdir /root/ca

cd /root/ca

mkdir certs crl newcerts private

chmod 700 private

touch index.txt

echo 1000 > serial

index.txt and serial files 用于记录证书签名的跟踪.

1.2、必须使用一个配置文件给openssl来使用,保存的名字位于/root/ca/openssl.cnf,附:https://jamielinux.com/docs/openssl-certificate-authority/appendix/root-configuration-file.html

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)取代,所以这里喜新不喜旧。

OCSP server address 通常会在证书里面指定。

4.1、OCSP准备配置文件,在intermediate CA的配置文件中指定,因为要使用intermediate CA做签名

[ server_cert ]

# ... snipped ...

authorityInfoAccess = OCSP;URI:http://ocsp.example.com

4.2、创建OCSP密钥对,OCSP responder需要使用该密钥对加密回复requesting party, 必须使用证书的拥有者相同的CA签名

生成私钥:

# cd /root/ca

# openssl genrsa -aes256 \

      -out intermediate/private/ocsp.example.com.key.pem 4096

根据私钥生成CSR:

# 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 \

      -in intermediate/certs/ocsp.example.com.cert.pem

4.2、撤消证书,本次测试环境中使用openssl的ocsp工具作为ocsp responder,在生产环境需要商业版。

建立一个server的证书去测试

# cd /root/ca

# openssl genrsa -out intermediate/private/test.example.com.key.pem 2048

# openssl req -config intermediate/openssl.cnf \(又出现了,为什么生成server证书还要intermediate配置文件?没谷歌到)

      -key intermediate/private/test.example.com.key.pem \

      -new -sha256 -out intermediate/csr/test.example.com.csr.pem

# openssl ca -config intermediate/openssl.cnf \

      -extensions server_cert -days 375 -notext -md sha256 \

      -in intermediate/csr/test.example.com.csr.pem \

      -out intermediate/certs/test.example.com.cert.pem

在本地运行OCSP responder,通常是和intermediate ca在一起(因为他使用他的配置文件呀),the OCSP responder reads index.txt directly,回复的消息也会使用OCSP cryptographic pair (using the -rkey and -rsigner options):

# openssl ocsp -port 127.0.0.1:2560 -text -sha256 \

      -index intermediate/index.txt \

      -CA intermediate/certs/ca-chain.cert.pem \

      -rkey intermediate/private/ocsp.example.com.key.pem \

      -rsigner intermediate/certs/ocsp.example.com.cert.pem \

      -nrequest 1

在另一个窗口,向OCSP发送requery包,使用-cert指定证书来发送:

# openssl ocsp -CAfile intermediate/certs/ca-chain.cert.pem \

      -url http://127.0.0.1:2560 -resp_text \

      -issuer intermediate/certs/intermediate.cert.pem \

      -cert intermediate/certs/test.example.com.cert.pem

------会有很多输出信息,OCSP Response Status表示发回来的状态,Responder Id是指responder的身份,Cert Status表示撤消状态。-------


撤消证书动作,谁签发谁撤消:

# openssl ca -config intermediate/openssl.cnf \

      -revoke intermediate/certs/test.example.com.cert.pem

然后再请求一次,就可以看到撤消的状态了。

文章标题:openssl创建CA详细操作手册
分享路径:https://www.cdcxhl.com/article24/pjshje.html

成都网站建设公司_创新互联,为您提供网站设计公司电子商务用户体验网站排名微信公众号品牌网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

小程序开发