Linux服务器如何安装CFCA SSL证书?
CFCA SSL证书部署到 Linux 服务器时,核心流程与其他 CA 签发的 SSL 证书基本一致:先生成私钥和 CSR,完成域名及组织验证后获取服务器证书和中间证书链,再根据服务器软件完成配置。
需要特别注意的是,普通 CFCA SSL 证书与国密 SSL 证书不是同一种部署场景。普通公网 HTTPS 可以按照 RSA/ECC + TLS 的常规方式配置;如果业务明确要求 SM2/SM3 等国密算法,则还需要使用支持国密协议和算法的服务器软件、密码库或国密网关,不能只替换一张 SSL 证书。
部署CFCA SSL证书前需要准备什么?
开始安装之前,需要准备以下文件:
| 文件 | 用途 |
|---|---|
私钥文件.key | 与证书对应,用于 TLS 身份认证 |
CSR文件.csr | 提交给 CA 申请证书 |
服务器证书.crt/.pem | CFCA 签发的站点证书 |
| 中间证书 | 用于构建完整的信任链 |
其中最重要的是私钥。
私钥是在生成 CSR 时产生的,CA 不会向你提供服务器私钥。
因此,在申请证书时应妥善保存生成 CSR 时对应的私钥。后续安装证书时,如果证书与私钥不匹配,HTTPS 将无法正常工作。
如何生成CFCA SSL证书的私钥和CSR?
如果申请的是普通 RSA SSL 证书,可以使用 OpenSSL 生成 2048 位 RSA 私钥:
openssl genrsa -out example.com.key 2048
然后生成 CSR:
openssl req -new \
-key example.com.key \
-out example.com.csr
执行命令后,OpenSSL 会要求填写相关信息。
对于公网 SSL 证书来说,最重要的是 Common Name(CN)和 SAN 中的域名信息。现代证书主要依赖 SAN 判断证书是否覆盖当前访问域名,因此申请时需要确认域名填写准确。
例如网站访问地址是:
www.example.com
那么证书至少应该覆盖:
www.example.com
如果同时需要保护:
example.com
www.example.com
api.example.com
则应在申请证书时选择能够覆盖这些域名的证书类型。
CFCA SSL证书申请完成后有哪些文件?
完成域名验证以及相应的组织审核后,CA 或证书服务商会提供证书下载文件。
常见文件可能包括:
example.com.crt
ca-bundle.crt
不同证书产品提供的文件名称和格式可能不同,也可能直接提供 PEM 格式的证书文件。
需要注意的是:
不要根据文件扩展名判断文件用途。
.crt、.cer、.pem 本身只是文件封装方式的常见表现,实际应查看文件内容。
可以使用:
openssl x509 -in example.com.crt -noout -subject -issuer -dates
检查证书信息。
如果证书格式不正确,可以先确认文件内容是否以类似下面的内容开头:
-----BEGIN CERTIFICATE-----
Nginx如何安装CFCA SSL证书?
Nginx 是 Linux 环境中非常常见的 HTTPS 服务。
假设证书文件放在:
/etc/nginx/ssl/
目录中:
/etc/nginx/ssl/example.com.crt
/etc/nginx/ssl/example.com.key
配置服务器证书
Nginx HTTPS 配置可以写成:
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/nginx/ssl/example.com-fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
root /var/www/html;
}
这里需要特别注意:
ssl_certificate 应配置服务器证书以及必要的中间证书链,而不是只放站点证书。
如果 CFCA 提供的是服务器证书和中间证书两个文件,可以按照 CA 提供的证书链顺序合并:
cat example.com.crt ca-bundle.crt > example.com-fullchain.pem
然后:
ssl_certificate /etc/nginx/ssl/example.com-fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
实际证书链顺序应以 CFCA 或证书服务商提供的证书链为准,不建议自行随意调整。
检查Nginx配置
修改配置后先不要直接重启:
nginx -t
如果显示:
syntax is ok
test is successful
再重新加载:
systemctl reload nginx
相比直接 restart,生产环境更推荐先测试配置,再使用 reload,减少不必要的业务中断。
Apache如何安装CFCA SSL证书?
Apache 的具体配置文件位置会根据 Linux 发行版有所不同。
例如:
/etc/httpd/conf.d/ssl.conf
或者:
/etc/apache2/sites-available/example-ssl.conf
HTTPS 虚拟主机可以配置为:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /etc/ssl/example.com-fullchain.pem
SSLCertificateKeyFile /etc/ssl/example.com.key
DocumentRoot /var/www/html
</VirtualHost>
对于 Apache 新版本,更建议直接使用包含完整证书链的证书文件,而不是依赖旧版本配置中的:
SSLCertificateChainFile
如果服务器版本较老,则应结合当前 Apache 版本的 mod_ssl 配置方式进行处理。
修改完成后,可以先检查配置:
apachectl configtest
如果返回:
Syntax OK
再重新加载 Apache:
systemctl reload httpd
Debian/Ubuntu 系统则可能使用:
systemctl reload apache2
Tomcat如何部署CFCA SSL证书?
Tomcat 与 Nginx、Apache 的区别在于,它经常使用 Java KeyStore 或 PKCS#12 格式保存私钥和证书。
现在没有必要为了 Tomcat 强制转换成 JKS。
如果 Tomcat 和 JDK 版本支持 PKCS#12,可以直接使用:
.p12
或:
.pfx
格式。
将证书和私钥转换为PKCS#12
例如:
openssl pkcs12 -export \
-inkey example.com.key \
-in example.com.crt \
-certfile ca-bundle.crt \
-out example.com.p12 \
-name tomcat
系统会要求设置 PKCS#12 文件密码。
然后可以使用:
keytool -list \
-keystore example.com.p12 \
-storetype PKCS12
检查文件内容。
Tomcat配置
以支持 HTTPS 的 Tomcat Connector 为例:
<Connector
port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="/etc/tomcat/ssl/example.com.p12"
keystoreType="PKCS12"
keystorePass="你的密码" />
具体参数名称会受到 Tomcat 版本影响,部署前应结合当前版本的 Tomcat 文档确认配置方式。
如果现有环境明确要求 JKS,再通过 keytool 将 PKCS#12 转换成 JKS:
keytool -importkeystore \
-srckeystore example.com.p12 \
-srcstoretype PKCS12 \
-destkeystore example.com.jks \
-deststoretype JKS
因此,JKS 是一种可选的 Java 密钥库格式,而不是 CFCA SSL 证书必须使用的格式。
Linux服务器如何检查证书和私钥是否匹配?
这是部署过程中非常值得检查的一步。
可以分别计算证书和私钥的公钥信息:
openssl x509 -in example.com.crt -pubkey -noout | \
openssl pkey -pubin -outform DER | sha256sum
然后:
openssl pkey -in example.com.key -pubout | \
openssl pkey -pubin -outform DER | sha256sum
如果两边得到的 SHA-256 值一致,说明证书与私钥对应。
也可以使用:
openssl x509 -in example.com.crt -noout -subject -issuer -dates
查看:
- Subject
- Issuer
- Not Before
- Not After
等基本信息。
如何检查CFCA证书链是否完整?
部署完成后,可以使用 OpenSSL 连接服务器:
openssl s_client \
-connect www.example.com:443 \
-servername www.example.com \
-showcerts
重点查看服务器返回的证书链。
也可以直接检查:
curl -Iv https://www.example.com
如果浏览器能够访问,但部分客户端出现:
unable to get local issuer certificate
或者:
certificate verify failed
需要重点检查服务器是否发送了正确的中间证书链。
CFCA普通SSL证书与国密SSL证书有什么区别?
这是部署 CFCA 证书时最容易混淆的问题。
普通CFCA SSL证书
普通公网 SSL 证书主要用于:
HTTPS
API
Web网站
互联网业务系统
其部署方式与其他公网 CA 证书基本一致。
例如:
RSA/ECC
↓
TLS
↓
Nginx / Apache / Tomcat
↓
HTTPS
国密SSL证书
国密 SSL 则涉及:
SM2
SM3
SM4
等国密算法和相应的国密 TLS 技术体系。
如果项目明确要求使用国密算法,不能简单地理解成:
“把普通 CFCA 证书换成国密 CFCA 证书就可以了。”
实际还需要确认:
- Web 服务器是否支持国密 TLS;
- OpenSSL 或其他密码库是否支持对应国密能力;
- 客户端是否支持国密协议;
- 是否使用国密浏览器;
- 是否通过国密网关、负载均衡设备提供国密 HTTPS;
- 项目是否存在密评或行业密码应用要求。
因此,普通 CFCA SSL 部署和国密 SSL 部署应该作为两个独立的技术方案处理。
CFCA SSL证书部署常见问题 FAQ
Q:CFCA SSL证书可以直接安装在Nginx吗?
A:可以。只要证书与私钥匹配,并按照 Nginx 要求配置服务器证书和完整的中间证书链即可。
Q:CFCA SSL证书一定要转换成JKS吗?
A:不一定。Nginx、Apache 等 Linux Web 服务可以直接使用 PEM/CRT 等格式;Tomcat 也可以使用 PKCS#12。只有现有 Java 系统明确要求 JKS 时,才需要转换为 JKS。
Q:CFCA证书安装后浏览器仍然提示不安全怎么办?
A:优先检查三个地方:域名是否匹配、证书是否有效、证书链是否完整。如果只有部分客户端出现问题,还需要检查客户端的根证书信任情况。可以使用 SSL证书工具 检查证书基本信息,也可以结合 修复SSL证书错误 进一步排查。
Q:普通CFCA SSL证书可以用于国密环境吗?
A:不能仅根据“CFCA”这个品牌判断。普通公网 SSL 证书与国密 SSL 证书属于不同的技术方案。如果项目明确要求 SM2/SM3 等国密算法,需要确认所申请的证书类型、服务器软件、密码库以及客户端是否形成完整的国密技术链路。
Q:Nginx配置CFCA证书时为什么需要fullchain?
A:因为客户端需要通过服务器发送的证书链验证站点证书。只发送服务器证书而缺少必要的中间 CA 证书,部分客户端可能无法建立完整的信任链。



京公网安备11010502031690号
网站经营企业工商营业执照
















