作者:honey热情沙漠 | 来源:互联网 | 2024-11-13 09:55
1. 准备工作
1) 在工作目录下新建目录 demoCA、demoCA/private 和 demoCA/newcerts(工作目录: /home/username)
2) 在 demoCA 目录中创建一个空文件 index.txt
3) 在 demoCA 目录中创建一个名为 serial 的文本文件,内容为一个合法的16进制数字,例如 0000
4) 配置环境变量 PATH,添加 %JAVA_HOME%/bin(如果安装了多个版本的 JDK,建议暂时在环境变量中只保留一个版本)
5) 修改 openssl.cnf 文件,将生成目录切换到我们新建的工作目录中:
dir = /home/username/demoCA # 工作目录
2. 生成CA签名证书
在命令终端中,将目录切换到 /home/username/demoCA,并执行以下命令:
openssl req -new -x509 -keyout ca.key -out ca.cer -days 3650
req 命令用于创建证书,-new 参数表示创建私钥而不是从已存在的文件中读取。在输入证书信息时,Country Name 填入 CN,Common Name 输入单位名称,即最后显示的颁发者。执行完之后,会生成 ca.key 和 ca.cer 文件。
3. 生成服务器端待签证书
1) 首先生成服务器端的私钥 (key 文件):
openssl genrsa -des3 -out server.key 1024
运行时会提示输入密码,此密码用于加密 key 文件(参数 des3 表示加密算法,也可以选择其他安全的算法)。如果觉得不方便,可以去除这个口令,但需要采取其他保护措施!
去除 key 文件口令的命令:
openssl rsa -in server.key -out server.key
2) 生成 csr (cer) 证书:
openssl req -new -key server.key -out server.csr
生成 Certificate Signing Request (CSR),生成的 csr 文件交给 CA 签名后形成服务器端的证书。屏幕上会有提示,按照指示输入所需的个人信息(输入 common name 时,要与服务器的域名保持一致,例如 test.baidu.com)。
4. 用生成的 CA 证书对服务器端的证书进行签名
openssl ca -in server.csr -out server.cer -cert ca.cer -keyfile ca.key
在签名过程中,如果遇到 “The stateOrProvinceName field needed to be the same in the CA certificate” 错误,是因为在 openssl.cnf 中的 policy_match 设置了前三个字段为 match。修改为:
stateOrProvinceName = optional
organizatiOnName= optional
即可解决问题。