证书生成
Linux环境安装了openssl组件。
搭建CA环境。
生成根私钥。
RSA证书:openssl genrsa -aes256 -out demoCA/private/cakey.pem 2048
ECDSA证书:openssl ecparam -name prime256v1 -genkey -out demoCA/private/cakey.pem
Generating RSA private key, 2048 bit long modulus
.................+++
..................+++
e is 65537 (0x10001)
--设置根私钥的保护密码
Enter pass phrase for demoCA/private/cakey.pem:
--再次输入私钥密码
Verifying - Enter pass phrase for demoCA/private/cakey.pem:
生成根证书请求文件。
--生成CA根证书申请文件careq.pem
openssl req -config openssl.cnf -new -key demoCA/private/cakey.pem -out demoCA/careq.pem
Enter pass phrase for demoCA/private/cakey.pem:
--输入根私钥密码
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.
-----
--以下名称请牢记,生成服务器证书和客户端证书时填写的信息需要与此处的一致
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:shanxi
Locality Name (eg, city) []:xian
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Abc
Organizational Unit Name (eg, section) []:hello
--Common Name可以随意命名
Common Name (eg, YOUR name) []:world
--Email可以选择性填写
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
-
``` —生成根证书时,需要修改openssl.cnf文件,设置basicConstraints=CA:TRUE vi openssl.cnf —生成CA自签发根证书 openssl ca -config openssl.cnf -out demoCA/cacert.pem -keyfile demoCA/private/cakey.pem -selfsign -infiles demoCA/careq.pem Using configuration from openssl.cnf Enter pass phrase for demoCA/private/cakey.pem: —输入根私钥密码 Check that the request matches the signature Signature ok Certificate Details:
Certificate is to be certified until Feb 28 02:17:11 2018 GMT (365 days) Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
--至此CA根证书自签发完成,根证书demoCA/cacert.pem。
```
生成服务端证书私钥,RSA和ECDSA加密方式可以根据需要选择其中一种。
--生成RSA服务端证书私钥文件server.key
RSA证书私钥:openssl genrsa -aes256 -out server.key 2048
Generating a 2048 bit RSA private key
.......++++++
..++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
--服务器私钥的保护密码
Verifying - Enter pass phrase for server.key:
--再次确认服务器私钥的保护密码
--生成ECDSA服务端证书私钥文件server.key
ECDSA证书私钥:openssl ecparam -name prime256v1 -genkey -out server.key
--对ECDSA证书私钥进行加密保护,根据提示输入加密密码:
openssl ec -in server.key -aes256 -out server.key
read EC key
writing EC key
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
--根据提示输入服务端私钥的密码,加密后会生成server.key.cipher,server.key.rand两个私钥密码保护文件。
gs_guc encrypt -M server -D ./
生成服务端证书请求文件。
-
--生成服务端/客户端证书时,修改openssl.cnf文件,设置basicConstraints=CA:FALSE
vi openssl.cnf
--修改demoCA/index.txt.attr中属性为no。
vi demoCA/index.txt.attr
--对生成的服务端证书请求文件进行签发,签发后将生成正式的服务端证书server.crt
openssl ca -config openssl.cnf -in server.req -out server.crt -days 3650 -md sha256
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 2 (0x2)
Not Before: Feb 27 10:11:12 2017 GMT
Not After : Feb 25 10:11:12 2027 GMT
countryName = CN
stateOrProvinceName = shanxi
organizationName = Abc
organizationalUnitName = hello
commonName = world
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
EB:D9:EE:C0:D2:14:48:AD:EB:BB:AD:B6:29:2C:6C:72:96:5C:38:35
X509v3 Authority Key Identifier:
keyid:84:F6:A1:65:16:1F:28:8A:B7:0D:CB:7E:19:76:2A:8B:F5:2B:5C:6A
Certificate is to be certified until Feb 25 10:11:12 2027 GMT (3650 days)
--选择y对证书进行签发
Sign the certificate? [y/n]:y
--选择y,证书签发结束
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
客户端证书,私钥的生成。
生成客户端证书和客户端证书私钥的方法和要求与服务器相同。
--生成客户端证书私钥,RSA和ECDSA加密方式可以根据需要选择其中一种。
RSA证书私钥:openssl genrsa -aes256 -out client.key 2048
ECDSA证书私钥:openssl ecparam -name prime256v1 -genkey -out client.key
对于ECDSA证书私钥,需要执行如下命令进行加密保护,根据提示输入加密密码:
openssl ec -in server.key -aes256 -out server.key
--根据提示输入客户端私钥的密码,加密后会生成client.key.cipher,client.key.rand两个私钥密码保护文件
gs_guc encrypt -M client -D ./
--生成客户端证书请求文件
openssl req -config openssl.cnf -new -key client.key -out client.req
--对生成的客户端证书请求文件进行签发,签发后将生成正式的客户端证书client.crt
openssl ca -config openssl.cnf -in client.req -out client.crt -days 3650 -md sha256
根据需要将客户端密钥转化为DER格式,方法如下:
吊销证书列表的生成。
--首先创建crlnumber文件
echo '00'>./demoCA/crlnumber
--吊销服务器证书
openssl ca -config openssl.cnf -revoke server.crt