您现在的位置是:娱乐 >>正文

apache 怎么安装ssl证书

娱乐177人已围观

简介Apache 装 SSL 证书这事,说穿了就是把两个文件塞到服务器上,再改几行配置。但真动手的时候,坑比想象的多。上周帮朋友处理一个老项目的证书续期,折腾了半小时才搞定,原因是他把中间证书和根证书的顺 ...

Apache 装 SSL 证书这事,安装说穿了就是安装把两个文件塞到服务器上,再改几行配置。安装但真动手的安装时候,坑比想象的安装多。上周帮朋友处理一个老项目的安装证书续期,折腾了半小时才搞定,安装原因是安装他把中间证书和根证书的顺序搞反了。所以这篇文章不讲理论,安装直接说怎么干。安装

先拿到该拿的安装文件

不管你是从阿里云、腾讯云还是安装 Let's Encrypt 签的证书,最后到手的安装一般是这几个东西:一个 .crt 或 .pem 结尾的证书文件,一个 .key 结尾的安装私钥文件,还有一个叫 chain.crt 或者 ca_bundle.crt 的安装中间证书链。有些服务商图省事,直接给你一个合并好的 fullchain 文件,那最省心。

关键点:Apache 需要的是证书 + 中间链拼在一起的完整链文件。如果你只填了域名证书,浏览器大概率会报“证书链不完整”,尤其安卓端和某些老版本浏览器。

拼的方法很简单,用 cat 命令就行:

cat your_domain.crt chain.crt > fullchain.pem

顺序别搞反,域名证书在前,中间证书在后。反过来 Apache 启动直接报错,日志里会说 key values mismatch 之类的话。

确认 Apache 加载了 SSL 模块

不是所有 Apache 默认都开了 mod_ssl。Debian/Ubuntu 上跑一句:

a2enmod ssl

CentOS 或 RHEL 系的话,检查 /etc/httpd/conf.modules.d/ 下面有没有 00-ssl.conf,或者直接看 httpd -M | grep ssl 有没有输出。没有的话,装 mod_ssl 包就行。

改配置文件,别乱改

把 fullchain.pem 和私钥传到服务器上,建议放 /etc/ssl/ 或者 /etc/pki/tls/ 下面,权限设成 600,属主是 root。私钥文件千万别给 644,那等于把钥匙挂门上。

找到 VirtualHost 配置段。一般在你站点的配置文件里,比如 /etc/apache2/sites-available/your-site.conf 或者 /etc/httpd/conf.d/ssl.conf。加这么一段:

<VirtualHost *:443> ServerName example.com DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/ssl/fullchain.pem SSLCertificateKeyFile /etc/ssl/private.key <Directory /var/www/html> AllowOverride All Require all granted </Directory> </VirtualHost>

注意:SSLCertificateFile 指向的是拼好的 fullchain,不是单独的域名证书。SSLCertificateKeyFile 指向私钥。老版本 Apache 可能还需要 SSLCertificateChainFile,但 2.4.8 以后这个指令已经废弃了,链直接拼进 cert 文件就行。

重启之前先做语法检查

直接重启 Apache 是个坏习惯。先跑:

apachectl configtest

或者 httpd -t。返回 Syntax OK 再重启,不然服务挂了还得去翻日志。重启命令:

systemctl restart apache2 # 或 systemctl restart httpd

验证到底成没成

浏览器打开 https://你的域名,看锁头图标。但更靠谱的是用命令行:

openssl s_client -connect example.com:443 -servername example.com

看返回的证书链里有没有你的域名证书和中间证书。如果只显示一个,说明链没拼对。另外可以用 curl -I https://example.com 看响应头,正常应该返回 200 或 301。

还有个常见坑:如果服务器前面挂了 CDN 或者负载均衡,证书得在那一层也配一遍。只改源站 Apache 没用,用户访问的还是 CDN 上的旧证书。

顺手把 HTTP 跳转做了

证书装完,用户用 http 访问还是明文。加个 301 跳转:

<VirtualHost *:80> ServerName example.com Redirect permanent / https://example.com/ </VirtualHost>

别用 RewriteRule 绕一圈,Redirect 指令更干净,性能也好一点。

最后提一句:Let's Encrypt 的证书 90 天就过期,记得配自动续期。用 certbot 的话,它会自己改 Apache 配置,但续期后要 reload 才生效。在 crontab 里加个 certbot renew --quiet && systemctl reload apache2,省得三个月后又被叫去救火。

Tags:

上一篇:渗透大佬

下一篇:试玩游戏赚钱的平台

相关文章

  • 网络诈骗真实案例视频大全

    娱乐

    凌晨两点,手机屏幕的光映在我脸上。视频里,一个四十多岁的男人对着镜头哭诉,他刚把家里准备买房的八十万转给了“投资导师”。那不是演技,他嘴唇发抖,手指在屏幕上划拉着银行转账记录,声音沙哑得像是被砂纸磨过 ...

    【娱乐】

    阅读更多
  • 网站被拦截无法获得加密信息

    娱乐

    网站被拦截无法获得加密信息 昨天下午三点十七分,我正打算从某银行官网下载一份电子回单。页面加载到一半,浏览器突然弹出一整块红色警告——"您的连接不是私密连接"。底下那行小字更刺眼:攻击者可能试图窃取您 ...

    【娱乐】

    阅读更多
  • 枪神纪驱动自瞄网站

    娱乐

    《枪神纪》里那个叫“驱动自瞄”的网站,我盯了它三个月。别误会,我不是去举报的,我是去研究它怎么骗人的——结果发现,它连“骗”都懒得认真做。 网站首页挂着一行刺眼的红字:“永久免费,无视检测”。下面是一 ...

    【娱乐】

    阅读更多


友情链接