国密证书生成实践
实验环境:
|
1
2
|
Linux ubuntu/Centos 64x86_64 x86_64 x86_64 GNU/Linux |
1、根据官网说明安装gmssl
|
1
2
3
4
5
|
$ unzip GmSSL-master.zip$ cd GmSSL-master$ ./config no-saf no-sdf no-skf no-sof no-zuc no-shared #不去编译动态库,编译出来的gmssl不再依赖libssl.so$ make$ sudo make install |
2、修改/usr/local/ssl/openssl.cnf配置
|
1
|
$ vi /usr/local/sslopenssl.cnf |
|
1
2
3
4
|
[ ca ]default_ca = CA_default # The default ca section[ CA_default ] #dir = ./demoCA # Where everything is keptdir = /home/myapp/demoCA #此处修改 |
3、初始化CA目录
1)创建根目录
|
1
2
|
$ mkdir -p /home/myapp/demoCA$ cd /home/myapp/demoCA |
2)创建其他目录
在此路径下要创建好/usr/local/ssl/openssl.cnf中需要的certs, crl ,new_certs_dir和private_key的子目录,默认是newcerts和private
|
1
|
$ mkdir certs crl newcerts private |
3)创建好database文件index.txt
|
1
|
touch index.txt |
4)创建好serial文件,并写入初始序号,如01
|
1
|
echo "01" > serial |
4、生成国密证书步骤
(1)生成根证书
1)生成私钥key
|
1
|
$ gmssl ecparam -genkey -name sm2p256v1 -text -out Root.key -config /usr/local/ssl/openssl.cnf |
2)生成证书签名请求
|
1
2
|
$ gmssl req -new -key Root.key -out Root.req -subj /C=CN/ST=Guang\ Zhou/L=GZ/O=Root/OU=Root\ Sign/CN=RootCA/emailAddress=Root@gmail.com -config /usr/local/ssl/openssl.cnf |
3)生成根证书
|
1
2
|
$ gmssl x509 -req -days 3650 -sm3 -in Root.req -signkey Root.key -out RootCA.crt $ cp RootCA.crt demoCA/$ cp Root.key demoCA/private/ |
类似于 apache/ssl/ca.crt和apache/ssl/ca.key
(2)生成中间证书(即客户端证书)
1)生成私钥
|
1
|
$ gmssl ecparam -genkey -name sm2p256v1 -text -out Medium.key -config /usr/local/ssl/openssl.cnf |
2)生成客户证书请求
|
1
|
$ gmssl req -new -key Medium.key -out Medium.req -subj /C=CN/ST=Guang\ Zhou/L=GZ/O=Medium/OU=Medium\ Sign/CN=MediumCA/emailAddress=Medium@gmail.com -config /usr/local/ssl/openssl.cnf |
3)签发证书
|
1
|
$ gmssl x509 -req -sm3 -days 3650 -CA RootCA.crt -CAkey demoCA/private/Root.key -CAcreateserial -in Medium.req -out MediumCA.crt |
4)证书验证
|
1
|
$ gmssl verify -CAfile RootCA.crt MediumCA.crt |
|
1
2
|
$ cp MediumCA.crt demoCA/$ cp Medium.key demoCA/private/ |
5)证书转换成浏览器认识的格式 pfx
|
1
|
$ gmssl pkcs12 -export -inkey Medium.key -in MediumCA.crt -out test.pfx -passin pass:xxx -passout pass:xxx |
6) 查看证书信息
|
1
2
3
4
5
6
7
8
9
10
11
|
PKCS转换为PEMgmssl pkcs12 -in test.pfx -out cert.pem -nodes转换后可查看证书信息打印出证书的内容:gmssl x509 -in cert.pem -noout -text打印出证书的系列号gmssl x509 -in cert.pem -noout -s erial打印出证书的拥有者名字gmssl x509 -in cert.pem -noout -subject打印出证书的MD5特征参数gmssl x509 -in cert.pem -noout -fingerprint |
(3)生成服务器证书
1) 生成私钥
|
1
|
$ gmssl ecparam -genkey -name sm2p256v1 -text -out Server.key -config /usr/local/ssl/openssl.cnf |
2) 证书请求
|
1
|
$ gmssl req -new -key Server.key -out Server.csr -subj /C=CN/ST=Guang\ Zhou/L=GZ/O=Server/OU=Server\ Sign/CN=ServerCA/emailAddress=Server@gmail.com -config /usr/local/ssl/openssl.cnf |
3) 签发证书
|
1
|
$ gmssl x509 -req -sm3 -days 3650 -CA RootCA.crt -CAkey demoCA/private/Root.key -CAcreateserial -in Server.csr -out ServerCA.crt |
4)证书验证
|
1
|
$ gmssl verify -CAfile RootCA.crt ServerCA.crt |
如果你觉得不错的话,右下角,随手点个推荐,鼓励支持hhh^_^
浙公网安备 33010602011771号