如何在Apache2服务器上手动部署从GoDaddy获取的SSL证书
核心概念先理清楚,别把几个文件的作用搞混
你现在找不对教程的核心原因,是把几个文件的定位搞混了,先掰明白再动手:
- 你手里的
generated-csr.txt是当初申请证书时提交给CA的签名请求材料,从证书签发完成那一刻起,这个文件就没有任何部署价值了,不需要放到服务器上,更不需要用它来部署证书,教程里从来不会让你把CSR丢到Apache配置里。 - 你手里的
generated-private-key.txt是和CSR配对的身份凭证,这个是要部署的核心文件之一,但它是你自己保密的内容,绝对不能传给任何第三方,更不能拼接进其他文件。 - 教程里提到的
.crt文件,是GoDaddy在验证完你的域名所有权之后,给你签发的域名专属正式证书,这才是需要部署的主体文件,你现在还没把这个文件从GoDaddy后台下载下来,自然找不到对应的操作指引。 - 教程里的
SSLCertificateChainFile要的文件,是GoDaddy随正式证书一起提供的中间证书链文件,和你的私钥、CSR完全无关,根本不需要你自己拼接生成,下载的证书包里直接就带。
完整手动部署步骤(适配Apache2)
1. 把所有需要的证书文件收集齐
- 等GoDaddy后台的证书状态显示“已签发”,直接去证书下载页,选择Apache版本的压缩包下载,解压后你会拿到两个核心的证书文件:
- 你的域名专属证书:文件名一般带你的域名,就是教程里说的
.crt格式文件 - 带
bundle字样的中间证书链文件,就是配置里SSLCertificateChainFile要指向的文件
- 你的域名专属证书:文件名一般带你的域名,就是教程里说的
- 把当初生成CSR时存好的
generated-private-key.txt找出来,确认内容完整:开头是-----BEGIN PRIVATE KEY-----,结尾是-----END PRIVATE KEY-----,没有多余的文字、换行或者截断。
如果当初的私钥找不到了,直接在GoDaddy后台重新生成CSR、重新签发证书就行,不用纠结之前的文件。
2. 把文件放到固定的服务器存储目录
- 在Apache的配置根目录下新建专门的SSL存储文件夹,比如
/etc/apache2/ssl/,把所有证书文件移进去:- 把私钥文件重命名为
你的域名.key - 把域名专属.crt文件保持原名即可
- 把bundle格式的中间链文件重命名为
chain.crt
- 把私钥文件重命名为
- 给文件夹下的所有文件设置安全权限,避免私钥被其他进程读取:执行命令
chmod 600 /etc/apache2/ssl/*
3. 修改Apache虚拟主机配置
- 找到对应域名的虚拟主机配置文件(一般存放在
/etc/apache2/sites-available/目录下),在443端口的HTTPS配置段里补全三个核心SSL配置项:SSLCertificateFile:填写域名专属.crt文件的完整绝对路径SSLCertificateKeyFile:填写刚才重命名好的.key私钥文件的完整绝对路径SSLCertificateChainFile:填写刚才重命名好的chain.crt中间链文件的完整绝对路径
注意:如果你用的是Apache 2.4.8及以上的新版本,也可以把域名证书和中间链按顺序拼成同一个crt文件,只配置
SSLCertificateFile就行,不过拆分配置的兼容性更好,不容易出信任问题。
4. 检查配置并生效
- 先执行配置校验命令,排查语法错误:
apache2ctl configtest - 如果返回
Syntax OK,就执行重载命令让配置生效:systemctl reload apache2 - 打开浏览器访问HTTPS地址,确认地址栏的安全锁标识正常,证书信息和你申请的域名、有效期匹配就完成了。
常见踩坑提醒
- 千万不要把私钥、CSR文件拼接进链文件:链文件的作用是给浏览器传递CA的信任层级,拼接私钥会直接带来严重的安全泄露风险,拼接CSR完全没有实际作用。
- 不要在CSR已经生成、证书已经签发的状态下,重新在服务器上生成新的CSR和私钥,不然会出现私钥和证书不匹配的报错。
- 如果下载证书时选错了格式(比如选了Nginx、IIS版本的包)也没关系,只要你能拿到属于你的域名专属证书、对应匹配的GoDaddy中间链文件,按上面的路径配置就可以正常用,不用纠结压缩包的格式。
内容的提问来源于stack exchange,提问作者jessibrandon
相关产品推荐
相关产品推荐

