Linux下使用openssl制作CA及证书颁发

Linux下使用openssl制作CA及证书颁发

2023年7月10日发(作者:)

Linux下使用openssl制作CA及证书颁发

一. 创建CA ................................................................................ 2

1. 创建CA需要用到的目录和文件: ............................... 2

2. 生成CA的私钥和自签名证书(即根证书) ............... 2

3. 创建一个配置文件,以便后续CA日常操作中使用: .. 3

二. CA的日常操作 ..................................................................... 4

1、创建私钥 .......................................................................... 4

2、查看创建的密钥 .............................................................. 4

3、创建请求文件 .................................................................. 4

4、查看创建的请求文件 ...................................................... 4

5. 根据证书申请请求签发证书 ........................................... 5

6、执行签发命令: .............................................................. 5

7. 吊销证书(作废证书) ................................................... 5

8. 生成证书吊销列表文件(CRL) ................................... 5

9、制作PFX(p12)格式的证书 ........................................ 6

三. 自己生成公钥密钥,并用测试CA签发数字证书 .......... 6

1. 创建密钥和证书请求(证书请求里包含了公钥) ....... 6

2. 用测试CA为testuser签发证书 ..................................... 6

3. 制作一个PKCS12格式的文档(个人数字证书) ....... 7

四、openssl的其他所有参数 .................................................... 7

Linux下使用openssl制作CA及证书颁发

本文旨在利用开源openssl软件,在Linux(或UNIX/Cygwin)下创建一个简单的CA。我们可以利用这个CA进行PKI、数字证书相关的测试。比如,在测试用Tomcat或Apache构建HTTPS双向认证时,我们可以利用自己建立的测试CA来为服务器端颁发服务器数字证书,为客户端(浏览器)生成文件形式的数字证书(可以同时利用openssl生成客户端私钥)。

该简单的CA将建立在用户自己的目录下($HOME/testca),无需超级用户(root)权限。

一. 创建CA

1. 创建CA需要用到的目录和文件:

执行命令如下:

mkdir "$HOME/testca"

cd "$HOME/testca"

mkdir newcerts private conf

chmod g-rwx,o-rwx private

echo "01" > serial

touch

说明:

$HOME/testca为待建CA的主目录。其中newcerts子目录将存放CA签署(颁发)过的数字证书(证书备份目录)。而private目录用于存放CA的私钥。目录conf只是用于存放一些简化参数用的配置文件。

文件serial和分别用于存放下一个证书的序列号和证书信息数据库。

当然,偷懒起见,可以只用按照本文操作即可,不一定需要关心各个目录和文件的作用。

2. 生成CA的私钥和自签名证书(即根证书)

创建文件:

vi "$HOME/testca/conf/"

文件内容如下:

####################################

[ req ]

default_keyfile = $ENV::HOME/testca/private/ default_md = md5

prompt = no

distinguished_name = ca_distinguished_name

x509_extensions = ca_extensions

[ ca_distinguished_name ]

organizationName = TestOrg

organizationalUnitName = TestDepartment

commonName = TestCA

emailAddress = ca_admin@

[ ca_extensions ]

basicConstraints = CA:true

########################################

然后执行命令如下:

cd "$HOME/testca"

openssl req -x509 -newkey rsa:2048 -out -outform PEM -days 2190 -config

"$HOME/testca/conf/"

执行过程中需要输入CA私钥的保护密码,假设我们输入密码: 888888

可以用如下命令查看一下CA自己证书的内容

openssl x509 -in -text -noout

3. 创建一个配置文件,以便后续CA日常操作中使用:

vi "$HOME/testca/conf/"

文件内容如下:

####################################

[ ca ]

default_ca = testca # The default ca section

[ testca ]

dir = $ENV::HOME/testca # top dir

database = $dir/ # index file.

new_certs_dir = $dir/newcerts # new certs dir

certificate = $dir/ # The CA cert

serial = $dir/serial # serial no file

private_key = $dir/private/ # CA private key

RANDFILE = $dir/private/.rand # random number file

default_days = 365 # how long to certify for

default_crl_days= 30 # how long before next CRL

default_md = md5 # message digest method to use

unique_subject = no # Set to 'no' to allow creation of

# several ctificates with same subject.

policy = policy_any # default policy

[ policy_any ]

countryName = optional

stateOrProvinceName = optional

localityName = optional

organizationName = optional

organizationalUnitName = optional

commonName = supplied

emailAddress = optional

########################################

二. CA的日常操作

1、创建私钥

openssl genrsa -des3 -out 1024 (创建密钥)

2、查看创建的密钥

openssl rsa -noout -text -in (查看创建的密钥)

3、创建请求文件

openssl req -new -key -out (查看请求文件)

4、查看创建的请求文件

openssl req -noout -text -in (查看创建的请求)

5. 根据证书申请请求签发证书

假设收到一个证书请求文件名为,文件格式应该是PKCS#10格式(标准证书请求格式)。

首先可以查看一下证书请求的内容,执行命令:

openssl req -in -text -noout

将看到证书请求的内容,包括请求者唯一的名字(DN)、公钥信息(可能还有一组扩展的可选属性)。

6、执行签发命令:

#####可以########

openssl x509 -req -in -out -CA -CAkey -CAcreateserial

-days 3650 //没有创建配置文件conf时的命令操作,签发证书。

################/////

openssl ca -in -out -config "$HOME/testca/conf/"

执行过程中会要求输入访问CA的私钥密码(刚才设置的888888)。

完成上一步后,签发好的证书就是,另外$HOME/testca/newcerts里也会有一个相同的证书副本(文件名为证书序列号)。

你可以执行以下语句来查看生成的证书的内容:

openssl x509 -in -text -noout

7. 吊销证书(作废证书)

一般由于用户私钥泄露等情况才需要吊销一个未过期的证书。(当然我们用本测试CA时其时很少用到该命令,除非专门用于测试吊销证书的情况)

假设需要被吊销的证书文件为,则执行以下命令吊销证书:

openssl ca -revoke -config "$HOME/testca/conf/"

8. 生成证书吊销列表文件(CRL)

8.1、准备公开被吊销的证书列表时,可以生成证书吊销列表(CRL),执行命令如下:

openssl ca -gencrl -out -config "$HOME/testca/conf/"

还可以添加-crldays和-crlhours参数来说明下一个吊销列表将在多少天后(或多少小时候)发布。

8.2、可以用以下命令检查的内容:

openssl crl -in -text –noout 9、制作PFX(p12)格式的证书

我们制作的这个PKCS#12文件将包含密钥、证书和颁发该证书的CA证书。该文件可以直接用于服务器数字证书或个人数字证书。

9.1、把前几步生成的密钥和证书制作成一个pkcs12文件的方法执行命令:

openssl pkcs12 -export -in -inkey -out testuser.p12 -config

"$HOME/testca/"

执行过程中需要输入保护密钥的密码(222222),以及新的保护pkcs12文件的密码。

执行完后,testuser.p12即为pkcs12文件。你可以直接拷贝到windows下,作为个人数字证书,双击导入IE后就可以使用了。该文件也可以直接用于tomcat作为服务器证书使用(我尽量在近期再写一篇关于如何自己用tomcat建立HTTPS双向认证测试环境的文章)

9.2、若要查看testuser.p12的内容可以用命令:

openssl pkcs12 -in testuser.p12

三. 自己生成公钥密钥,并用测试CA签发数字证书

我们在平时测试时,可以自己用openssl为服务器或用户生成公钥密钥,并用上面创建的CA签发对应私钥(密钥)的数字证书。

假设,我们就用刚才创建CA的操作系统用户为名为testuser的用户创建数字证书,我们要把待创建的私钥、证书等都放在目录$HOME/testuser下:

1. 创建密钥和证书请求(证书请求里包含了公钥)

创建$HOME/testuser目录并执行命令:

mkdir $HOME/testuser

cd $HOME/testuser

openssl req -newkey rsa:1024 -keyout -keyform PEM -out -outform PEM

-subj "/O=TestCom/OU=TestOU/CN=testuser"

执行过程中需要输入私钥的保护密码,假设我们输入密码: 222222

执行完后,即为用户的密钥,而即为证书请求。

可以用命令查看证书请求的内容:

openssl req -in -text -noout

2. 用测试CA为testuser签发证书

同样还在$HOME/testuser目录下执行命令: openssl ca -in -out -config "$HOME/testca/conf/"

执行过程中需要输入CA的密钥保护密码(刚才设置的888888),并且最后询问你是否要给该用户签发证书时要选y。

执行完后,即为证书,

可以用命令查看证书内容:

openssl x509 -in -text -noout

3. 制作一个PKCS12格式的文档(个人数字证书)

我们制作的这个PKCS#12文件将包含密钥、证书和颁发该证书的CA证书。该文件可以直接用于服务器数字证书或个人数字证书。

把前几步生成的密钥和证书制作成一个pkcs12文件的方法执行命令:

openssl pkcs12 -export -in -inkey -out testuser.p12 -name testuser -chain

-CAfile "$HOME/testca/"

执行过程中需要输入保护密钥的密码(222222),以及新的保护pkcs12文件的密码。

执行完后,testuser.p12即为pkcs12文件。你可以直接拷贝到windows下,作为个人数字证书,双击导入IE后就可以使用了。该文件也可以直接用于tomcat作为服务器证书使用(我尽量在近期再写一篇关于如何自己用tomcat建立HTTPS双向认证测试环境的文章)。

若要查看testuser.p12的内容可以用命令:

openssl pkcs12 -in testuser.p12

说明:

- 本文中名词“个人数字证书”意识为包含私钥和证书的实体,而不是单指只保护公钥的数字证书。- openssl版本OpenSSL 0.9.8g 19

四、openssl的其他所有参数

参数:

-inform arg - input format - default PEM (one of DER, NET or PEM)

-outform arg - output format - default PEM (one of DER, NET or PEM)

-keyform arg - private key format - default PEM

-CAform arg - CA format - default PEM

-CAkeyform arg - CA key format - default PEM

-in arg - input file - default stdin

-out arg - output file - default stdout

-passin arg - private key password source

-serial - print serial number value

-subject_hash - print subject hash value

-issuer_hash - print issuer hash value -hash - synonym for -subject_hash

-subject - print subject DN

-issuer - print issuer DN

-email - print email address(es)

-startdate - notBefore field

-enddate - notAfter field

-purpose - print out certificate purposes

-dates - both Before and After dates

-modulus - print the RSA key modulus

-pubkey - output the public key

-fingerprint - print the certificate fingerprint

-alias - output certificate alias

-noout - no certificate output

-ocspid - print OCSP hash values for the subject name and public key

-ocsp_uri - print OCSP Responder URL(s)

-trustout - output a "trusted" certificate

-clrtrust - clear all trusted purposes

-clrreject - clear all rejected purposes

-addtrust arg - trust certificate for a given purpose

-addreject arg - reject certificate for a given purpose

-setalias arg - set certificate alias

-days arg - How long till expiry of a signed certificate - def 30 days

-checkend arg - check whether the cert expires in the next arg seconds exit 1 if so, 0 if not

-signkey arg - self sign cert with arg

-x509toreq - output a certification request object

-req - input is a certificate request, sign and output.

-CA arg - set the CA certificate, must be PEM format.

-CAkey arg - set the CA key, must be PEM format missing, it is assumed to be in the CA file.

-CAcreateserial - create serial number file if it does not exist

-CAserial arg - serial file

-set_serial - serial number to use

-text - print the certificate in text form

-C - print out C code forms

-md2/-md5/-sha1/-mdc2 - digest to use

-extfile - configuration file with X509V3 extensions to add

-extensions - section from config file with X509V3 extensions to add

-clrext - delete extensions before signing and input certificate

-nameopt arg - various certificate name options

-engine e - use engine e, possibly a hardware device.

-certopt arg - various certificate text options

发布者:admin,转转请注明出处:http://www.yc00.com/web/1688942801a186321.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信