为SSF配置加密连接时如何正确生成certificate.crt文件
SSF服务端自定义证书生成正确方案
核心问题出在证书后缀与编码格式的认知偏差:SSF所需的certificate.crt为PEM编码格式,并非DER二进制格式,无需做编码转换,直接重命名即可解决文件不匹配问题,之前转DER的操作是证书报错的直接原因。
前置准备
提前创建SSF要求的证书目录结构:
./certs/ ├─ dh4096.pem ├─ private.key ├─ certificate.crt └─ trusted/ └─ ca.crt
以下操作已在OpenSSL 1.1.1l版本验证通过。
完整操作步骤
1. 生成Diffie-Hellman参数
执行以下命令生成DH参数文件:
openssl dhparam -outform PEM -out dh4096.pem 4096
生成完成后将dh4096.pem移入./certs/目录。
2. 创建证书扩展配置文件
在工作目录新建extfile.txt,写入如下配置:
[ v3_req_p ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
3. 生成自签名CA根证书
执行命令直接生成带主题信息的CA证书,跳过交互式输入:
openssl req -x509 -nodes -newkey rsa:4096 -keyout ca.key -out ca.crt -days 3650 -subj '/CN=www.mydom.com/O=My Company Name LTD./C=US'
生成完成后将ca.crt移入./certs/trusted/目录,ca.key为CA根私钥,请单独妥善保管,不要放入服务端运行目录。
4. 生成服务端私钥与证书签名请求
执行命令生成服务端私钥和CSR请求文件:
openssl req -newkey rsa:4096 -nodes -keyout private.key -out certificate.csr -subj '/CN=www.mydom.com/O=My Company Name LTD./C=US'
生成完成后将private.key移入./certs/目录。
5. 用CA签发服务端证书
执行签名命令生成PEM格式的服务端证书:
openssl x509 -extfile extfile.txt -extensions v3_req_p -req -sha1 -days 3650 -CA ca.crt -CAkey ca.key -CAcreateserial -in certificate.csr -out certificate.pem
6. 处理证书后缀匹配
禁止执行DER格式转换命令,直接将生成的certificate.pem重命名为certificate.crt:
# Linux/macOS系统执行 mv certificate.pem certificate.crt
Windows系统直接在资源管理器中修改文件名即可,重命名完成后将certificate.crt移入./certs/目录。
报错原因说明
之前执行openssl x509 -outform der转换命令,会把文本格式的PEM证书转为二进制格式的DER证书,而SSF的证书加载逻辑默认解析PEM编码内容,仅通过后缀识别需要加载的文件,不强制要求后缀名必须为.pem。强行转换为DER格式后,SSF无法解析二进制证书内容,就会抛出证书加载错误。
验证说明
所有文件按要求放置到位后,直接启动SSF服务端即可正常运行,不会再出现证书相关报错。客户端连接时仅需将ca.crt放入客户端自身的./certs/trusted/目录即可,无需拷贝服务端私钥和服务端证书文件。
内容的提问来源于stack exchange,提问作者secf00tprint
相关产品推荐
相关产品推荐

