Apache或Nginx安装配置SSL证书

Apache或Nginx安装配置SSL证书

在安装SSL证书时踩了无数个坑之后,终于搞定了。立文纪念。

注意前提条件:

  1. 有一个已经备案的站点 。
  2. 有已经申请下来的SSL证书,且已经下载到本地

只有满足上述两个条件才可以试用下面的教程。关于怎么备案网址和申请ssl度娘一大堆。不赘述。

操作环境:

 Apache 2.4 / Nginx 1.24
 CentOS 7

Apache配置步骤:

我用的WinSCP工具。
先在服务器中的apache根目录下新建cert文件夹,并将下载的Apache证书、证书链和秘钥文件拷贝到cert目录中 。

.crt扩展名的证书文件采用 Base64-encoded的PEM格式文本文件,可根据需要修改成 .pem等扩展名。

然后打开apache/conf/httpd.conf, 在httpd.conf文件中,crtr+F找到并设置以下参数(如果前面有#号,把#删掉):

#删除行首的配置语句注释符号“#”。加载mod_ssl.so模块启用SSL服务,Apache默认是不启用该模块的。如果找不到该配置,请重新编译mod_ssl模块。
LoadModule ssl_module modules/mod_ssl.so  

#删除行首的配置语句注释符号“#”。 
Include conf/extra/httpd-ssl.conf   

保存,退出。

打开 Apache/conf/extra/httpd-ssl.conf 。 在httpd-ssl.conf文件中 ,在最底下添加以下代码:

 说明: 根据操作系统的不同, httpd-ssl.conf文件也可能存放在 conf.d/ssl.conf目录中。 
<VirtualHost *:443>
    ServerName www.example.com
    ServerAlias example.com
    DocumentRoot "这里填你www根目录"
    #ErrorLog "logs/wordpress-error_log"
    #CustomLog "logs/wordpress-access_log" common
SSLEngine on
SSLHonorCipherOrder on
# 添加SSL协议支持协议,去掉不安全的协议:
SSLProtocol all -SSLv2 -SSLv3 
# 使用此加密套件:
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM  
# 将 ***_public.crt 替换成你的证书文件名:
SSLCertificateFile cert/ ***_public.crt
# 将 ***.key替换成您证书的秘钥文件名:
SSLCertificateKeyFile cert/***.key 
# 证书链开头如果有#字符,请删除。
SSLCertificateChainFile cert/***_chain.crt
</VirtualHost>

然后重启apache服务器。我比较硬核,连带着服务器也重启了。。。

访问本站:lzyz.fun

好看的小绿锁 ~

Nginx配置步骤

一般来说nginx安装在服务器的/etc/nginx/路径下,在/conf.d下新建cert文件夹,然后将证书放进去。

接下来修改配置文件default.conf,注意先把旧的配置备份。

# 第一个 server 块,用于将 HTTP 请求重定向到 HTTPS
server {
    listen 80 default_server;  # 监听 HTTP 端口 80
    listen [::]:80 default_server;
    server_name lzyz.fun;   # 这里写你的域名
   
    if ($http_host !~ "^www\.lzyz\.fun$"){
        rewrite ^(.*) https://lzyz.fun$1 break;
    }
    return 301 https://$host$request_uri;  # 所有 HTTP 请求重定向到 HTTPS
}

# 第二个 server 块,启用 HTTPS,并设置 SSL 证书和密钥
server {
    listen                     443 ssl; 
    listen                     [::]:443 ssl;
    server_name                lzyz.fun; 

    ssl_certificate            /etc/nginx/conf.d/cert/lzyz.fun.pem;
    ssl_certificate_key        /etc/nginx/conf.d/cert/lzyz.fun.key;
    ssl_protocols              TLSv1.2 TLSv1.3;  # 支持的 SSL 协议版本
    ssl_session_cache          shared:SSL:10m;  # 缓存 SSL 会话
    ssl_session_tickets        off;  # 禁用 SSL 会话票据
    ssl_prefer_server_ciphers  off;  # 关闭优先使用服务器的加密套件

    root /your_web_root; # 你网站的项目根目录

    index index.php index.html index.htm index.nginx-debian.html;  # 默认文档索引

    # 处理站点根目录下的请求
    location / {
        proxy_pass  http://yourIp:port;
        proxy_redirect     off;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        #规则:禁用不必要的http方法:DELETE、PUT、TRACE、OPTIONS等
        limit_except GET POST HEAD{  deny all;}
   }

   # 规则:使用安全的加密套件
   ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES256-SHA:HIGH:!MEDIUM:!LOW:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:@STRENGTH';  
   
   error_log /var/log/nginx/example.yourdomain.com-error.log error;
   access_log  /var/log/nginx/example.yourdomain.com-access.log;

   include extra/*.conf;

   # 处理特定的 /contact.php 请求
   location = /contact.php {
        try_files $uri $uri/ /index.php?$query_string;  # 尝试找到文件,否则重定向到 index.php
   }

}

重启nginx即可


更新(证书过期续期办法)

SSL证书过期续期办法:首先在阿里云找到SSL的界面,点击这里

填写免费申请表单:

点击下一步出现如下:

解释下 ,这里的东西需要在阿里DNS页面配置进去:
主机记录写TXT,记录值复制好添加进去。

等阿里的通知邮件,成功后下载SSL证书

然后按部署步骤重新将原来的证书替换掉即可。

更新2.0 :

华为云文档里有各种类型证书安装方法,强烈推荐。

SSL证书使用概述:

https://support.huaweicloud.com/usermanual-ccm/ccm_01_0073.html

在Nginx服务器上安装SSL证书:

https://support.huaweicloud.com/usermanual-ccm/ccm_01_0082.html

Apache服务器上安装SSL证书:

https://support.huaweicloud.com/usermanual-ccm/ccm_01_0083.html

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注