apache原生支持pem格式,无需转换;其sslcertificatefile指令指定pem编码的证书文件(以-----begin certificate-----开头),sslcertificatekeyfile指定pem私钥(以-----begin rsa private key-----等开头),中间证书链可合并或通过sslcacertificatefile引用。

Apache 本身直接支持 PEM 格式,不需要额外转换。
Apache 原生使用 PEM 格式
Apache(包括 Nginx、OpenSSL 生态下的大多数服务)默认且唯一推荐使用的证书格式就是 PEM。它要求:
- 服务器证书(domain.crt 或 domain.pem)为 PEM 编码,以
-----BEGIN CERTIFICATE-----开头; - 私钥文件(domain.key)也为 PEM 编码,以
-----BEGIN RSA PRIVATE KEY-----或-----BEGIN PRIVATE KEY-----开头; - 中间证书链(可选)通常合并进证书文件,或单独用
SSLCertificateChainFile(旧版)或更推荐的SSLCACertificateFile指向一个 PEM 格式的链文件。
常见“误以为要转换”的情况
有时你以为需要“转换”,其实只是文件内容或结构没配对好:
- 拿到的 .pem 文件里混着证书 + 私钥?需手动拆开:用文本编辑器分离出私钥段另存为
.key,其余证书段(含可能的中间证书)另存为.crt或.pem; - 证书是 DER(.der/.cer 二进制)?才需转为 PEM:
openssl x509 -in cert.der -inform der -out cert.pem -outform pem; - 只有 .pfx/.p12 文件?需解包提取 PEM 内容:
openssl pkcs12 -in cert.pfx -clcerts -nokeys -out domain.crtopenssl pkcs12 -in cert.pfx -nocerts -nodes -out domain.key; - 私钥被加密(带密码)?Apache 启动时会卡住等待输入密码,应先移除密码:
openssl rsa -in domain.key -out domain.key.unencrypted,再在配置中引用该无密钥文件。
Apache 配置示例(确认格式正确)
在 ssl.conf 或虚拟主机配置中,确保路径指向正确的 PEM 文件:
SSLEngine on SSLCertificateFile /etc/ssl/certs/domain.crt # 必须是 PEM 格式证书 SSLCertificateKeyFile /etc/ssl/private/domain.key # 必须是 PEM 格式私钥 SSLCACertificateFile /etc/ssl/certs/chain.pem # 中间证书链,PEM 格式
配置后运行 apachectl configtest 验证语法,再重启服务。











