整理了个 Windows 批处理文件,需要 8 个步骤。
1. ECHO OFF
2.
3. REM 参考链接:http://book.51cto.com/art/201004/192440.htm
4.
5. PUSHD "E:\OpenSSL 证书管理\"
6. ECHO.
7.
8. ECHO 1. 构建随机数 .rnd
9. openssl rand -out .rnd 1000
10. :: 各参数的含义如下所示:
11. :: rand 随机数命令。
12. :: -out 输出文件路径,这里将随机数文件 .rnd 输出到当前目录。
13. :: 1000 指产生的伪随机数字节数。
14. ECHO.
15.
16. ECHO 2. 构建根证书私钥 ca.key.pem
17. openssl genrsa -aes256 -out ca.key.pem 2048
18. :: 各参数的含义如下所示:
19. :: genrsa 产生 RSA 密钥命令。
20. :: -aes256 使用 AES 算法(256位密钥)对产生的私钥加密。可选算法包括 DES、DESede、IDEA 和 AES。
21. :: -out 输出路径,这里指 ca.key.pem 文件。
22. :: 2048 指 RSA 密钥长度比特位数,默认长度为 512 位。
23. ::
24. :: 注:1) 需要指定根证书密码 (pass phrase for ca.key.pem),设为: 123456
25. :: 2) OpenSSL 通常使用 PEM(Privacy Enbanced Mail,隐私增强邮件)编码格式保存私钥。
26. ECHO.
27.
28. ECHO 3. 生成根证书签发申请 ca.csr
29. openssl req -new -key ca.key.pem -out ca.csr -subj "/C=CN/ST=BJ/L=BJ/O=zlex/OU=zlex/CN=*.zlex.org"
30. :: 各参数的含义如下所示:
31. :: req 产生证书签发申请命令。
32. :: -new 表示新请求。
33. :: -key 密钥,这里为 ca.key.pem 文件。
34. :: -out 输出路径,这里为 ca.csr 文件。
35. :: -subj 指定用户信息,这里使用泛域名 "*.zlex.org" 作为用户名。
36. ::
37. :: 注:需要输入根证书密码: 123456
38. ECHO.
39.
40. ECHO 4. 签发根证书 ca.cer
41. openssl x509 -req -days 10000 -sha1 -extensions v3_ca -signkey ca.key.pem -in ca.csr -out ca.cer
42. :: 各参数的含义如下所示:
43. :: x509 签发 X.509 格式证书命令。
44. :: -req 表示证书输入请求。
45. :: -days 表示有效天数,这里为 10000 天。
46. :: -sha1 表示证书摘要算法,这里为 SHA1 算法。
47. :: -extensions 表示按 OpenSSL 配置文件 v3_ca 项添加扩展。
48. :: -signkey 表示自签名密钥,这里为 ca.key.pem 文件。
49. :: -in 表示输入文件,这里为 ca.csr 文件。
50. :: -out 表示输出文件,这里为 ca.cer 文件。
51. ::
52. :: 注:1) 需要输入根证书密码: 123456
53. :: 2) 构建的根证书 ca.cer 可以用来签发服务器证书和客户证书。
54. ECHO.
55.
56. ECHO 5. 根证书转换 ca.p12
57. openssl pkcs12 -export -cacerts -inkey ca.key.pem -in ca.cer -out ca.p12
58. :: 各参数的含义如下所示:
59. :: pkcs12 PKCS#12 编码格式证书命令。
60. :: -export 表示导出证书。
61. :: -cacerts 表示仅导出CA证书。
62. :: -inkey 表示输入密钥,这里为 ca.key.pem 文件。
63. :: -in 表示输入文件,这里为 ca.cer 文件。
64. :: -out 表示输出文件,这里为 ca.p12 文件。
65. ::
66. :: 注:1) 需要输入根证书密码: 123456
67. :: 2) 需要设定导出密码 (Export Password),设为: abcdef
68. :: 3) OpenSSL 产生的数字证书不能在 Java 语言环境中直接使用,需要将其转化为 PKCS#12 编码格式。
69. ECHO.
70.
71. ECHO 6. 构建服务器私钥 server.key.pem
72. openssl genrsa -aes256 -out server.key.pem 2048
73. :: 各参数的含义如下所示:
74. :: genrsa 产生 RSA 密钥命令。
75. :: -aes256 使用 AES 算法(256位密钥)对产生的私钥加密。可选算法包括 DES、DESede、IDEA 和 AES。
76. :: -out 输出路径,这里指 server.key.pem 文件。
77. :: 2048 指 RSA 密钥长度比特位数,默认长度为 512 位。
78. ::
79. :: 注:需要指定服务器证书密码 (pass phrase for server.key.pem),设为: 234567
80. ECHO.
81.
82. ECHO 7. 生成服务器证书签发申请 server.csr
83. openssl req -new -key server.key.pem -out server.csr -subj "/C=CN/ST=BJ/L=BJ/O=zlex/OU=zlex/CN=www.zlex.org"
84. :: 各参数的含义如下所示:
85. :: req 产生证书签发申请命令。
86. :: -new 表示新请求。
87. :: -key 密钥,这里为 server.key.pem 文件。
88. :: -out 输出路径,这里为 server.csr 文件。
89. :: -subj 指定用户信息,这里使用域名 "www.zlex.org" 作为用户名。
90. ::
91. :: 注:需要输入服务器证书密码: 234567
92. ECHO.
93.
94. ECHO 8. (使用根证书)签发服务器证书 server.cer
95. openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA ca.cer -CAkey ca.key.pem -CAserial ca.srl -CAcreateserial -in server.csr -out server.cer
96. :: 各参数的含义如下所示:
97. :: x509 签发 X.509 格式证书命令。
98. :: -req 表示证书输入请求。
99. :: -days 表示有效天数,这里为 3650 天。
100. :: -sha1 表示证书摘要算法,这里为 SHA1 算法。
101. :: -extensions 表示按 OpenSSL 配置文件 v3_req 项添加扩展。
102. :: -CA 表示 CA 证书,这里为 ca.cer 文件。
103. :: -CAkey 表示 CA 证书密钥,这里为 ca.key.pem 文件。
104. :: -CAserial 表示 CA 证书序列号文件,这里为 ca.srl 文件。
105. :: -CAcreateserial 表示创建 CA 证书序列号 文件。
106. :: -in 表示输入文件,这里为 server.csr 文件。
107. :: -out 表示输出文件,这里为 server.cer 文件。
108. ::
109. :: 注:需要输入根证书密码: 123456
110. PAUSE
111. ECHO.
112.
113. POPD
114. ECHO ON