无法创建SSL证书请求文件,openssl加载私钥报错如何解决?
问题根因
你使用ssh-keygen生成的是OpenSSH格式的SSH登录专用私钥,和SSL证书场景下OpenSSL要求的RSA私钥格式不兼容,这是报错的核心原因,和文件编码无关。
经过验证的MacOS Apache本地SSL证书生成步骤
1. 生成SSL专用RSA私钥
执行以下命令生成2048位无密码私钥(本地开发使用无需加密,可省略每次启动Apache输入密码的步骤):
openssl genrsa -out server.key 2048
如果需要加密私钥,可添加-des3参数。
2. 生成证书签名请求(CSR)
执行以下命令生成CSR文件,填写信息时Common Name字段需和你本地虚拟主机的访问域名完全一致(例如dev.local):
openssl req -new -key server.key -out server.csr
3. 生成自签名SSL证书
本地开发无需向公共CA申请证书,直接生成自签名证书即可,以下命令设置证书有效期为10年:
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
Apache虚拟主机配置适配
完成证书生成后,按以下步骤修改Apache配置:
- 编辑
/etc/apache2/httpd.conf,取消以下两行的注释:LoadModule ssl_module libexec/apache2/mod_ssl.so Include /private/etc/apache2/extra/httpd-vhosts.conf - 编辑
/etc/apache2/extra/httpd-vhosts.conf,添加443端口的虚拟主机配置,示例如下:<VirtualHost *:443> DocumentRoot "/path/to/your/project" ServerName your-local-domain.com SSLEngine on SSLCertificateFile /path/to/your/server.crt SSLCertificateKeyFile /path/to/your/server.key </VirtualHost> - 执行配置校验命令,确认无语法错误:
apachectl configtest - 重启Apache生效:
sudo apachectl restart
内容的提问来源于stack exchange,提问作者Alexey
相关产品推荐
相关产品推荐

