HTTPS部署(基于阿里云)

HTTPS部署

前期需要:域名(通过ICP备案)、阿里云ECS服务器(域名解析)

Author:Redamancy_Xun



步骤一:申请免费SSL证书

参考:申请免费DV单域名试用证书

  1. 购买免费证书
    1. 每个阿里云个人或企业用户(以实名认证为准)每个自然年可以一次性申请20张免费证书(每个自然年仅限领取1次)
    2. 每一个免费证书的使用时长为3个月(不花钱升级),但是有20张可供给不同域名(不同服务器)
    3. 访问免费证书购买页
  2. 创建证书
    1. 登录数字证书管理服务控制台
    2. 在左侧导航栏,单击SSL 证书
    3. SSL证书页面,单击免费证书页签
    4. 免费证书页签,单击创建证书
    5. 证书申请面板,配置证书参数,选中快捷签发,单击提交审核
    6. 详细内容见申请免费DV单域名试用证书
  3. 证书审核
    1. 按照验证信息中的提示,完成域名所有权的验证,并单击验证。更多信息和常见报错,请参见域名所有权验证
    2. 注意:要根据步骤加入DNS解析,后客服自动签发证书

步骤二:申请免费SSL证书

参考:SSL证书安装指南Nginx或Tengine服务器配置SSL证书

  1. 下载SSL证书到本地

    1. 不同类型的服务器支持配置的SSL证书格式不同。数字证书管理服务提供了适用于各种服务器(例如,Nginx、Spring Boot、Apache Tomcat、Apache(httpd)、Internet Information Services)的SSL证书压缩包,可直接下载使用(无需手动转换SSL证书格式)

    2. 登录数字证书管理服务控制台

    3. 在左侧导航栏,单击SSL 证书

    4. 通过单击对应页签,选择要操作的SSL证书类型:

      • 证书管理页签:表示操作付费版SSL证书

      • 免费证书页签:表示操作免费版SSL证书

    5. 在SSL证书列表,定位到要下载的SSL证书,单击操作下载

    6. 证书下载面板,定位到目标服务器,单击操作列的下载(下载Nginx)

  2. 云服务器部署SSL证书

    1. ECS管理控制台安全组页面,放行443端口,否则网站访问可能出现异常。关于如何配置安全组,参见添加安全组规则

    2. 执行nginx -t,查看nginx的配置文件路径(下面用/etc/nginx/nginx.conf为例)

    3. 执行以下命令,在nginx目录下创建一个用于存放证书的目录

      cd /etc/nginx  #进入Nginx默认配置文件目录。该目录为手动编译安装Nginx时的默认目录,如果您修改过默认安装目录或使用其他方式安装,请根据实际配置调整。
      mkdir cert  #创建证书目录,命名为cert。
      
    4. 将证书文件和私钥文件上传到Nginx服务器的证书目录(/etc/nginx/cert

    5. 编辑Nginx配置文件nginx.conf,修改与证书相关的配置

      a. 执行以下命令,打开配置文件

      sudo vim /etc/nginx/nginx.conf
      

      b. 在nginx.conf中定位到http块中的server属性配置(可能http里面找不到server块,正常,我第一次也这样,不影响)

      c. 参考如下示例进行修改(直接在http块里面加进去就好)

      server {
           #HTTPS的默认访问端口443。
           #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
           #指定了服务器监听的端口为443,并启用了SSL/TLS支持。
           listen 443 ssl;
           
           #填写证书绑定的域名(具体)
           server_name <yourdomain>;
       
           #填写证书文件绝对路径,将<cert-file-name>.pem替换为你实际的证书文件名
           ssl_certificate cert/<cert-file-name>.pem;
           #填写证书私钥文件绝对路径,将<cert-file-name>.key替换为你实际的私钥文件名
           ssl_certificate_key cert/<cert-file-name>.key;
       
       	#配置SSL会话缓存,以提高性能
           ssl_session_cache shared:SSL:1m;
           #指定SSL会话的超时时间
           ssl_session_timeout 5m;
      	 
           #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
           #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
           #ssl_ciphers:这里配置了支持的加密套件。它列出了Nginx将使用的加密算法和密钥长度。
           ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
           #ssl_protocols:指定允许的TLS协议版本。在这个例子中,允许TLSv1.1、TLSv1.2和TLSv1.3。TLSv1.0和SSLv3已被视为不安全,因此不在这里列出。
           ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
      
           #表示优先使用服务端加密套件。默认开启
           ssl_prefer_server_ciphers on;
       
       	#这是一个基本的 Nginx location 块,用于指定网站的根目录和默认文件,/表示所有的请求都会经过这个location块
          location / {
          	#root /var/www/html;:这里指定了服务器的根目录为/var/www/html,这意味着当有请求访问根路径(/)时,Nginx会在/var/www/html目录下查找相应的文件来返回给客户端
          	root /var/www/html;
          	#index index.html index.htm;:这一行指定了默认的文件名,如果客户端请求的是一个目录而非具体的文件,Nginx会尝试返回index.html或者index.htm文件,如果这两个文件都不存在,会返回一个目录列表或者404错误(如果没有启用目录列表功能)。
          	index index.html index.htm;
          }
      }
      

      d. **可选:**设置HTTP请求自动跳转HTTPS(一样直接加进去就行)(放前面)

      server {
          listen 80;
          #填写证书绑定的域名(具体)
          server_name <yourdomain>;
          #将所有HTTP请求通过rewrite指令重定向到HTTPS。
          rewrite ^(.*)$ https://$host$1;
          location / {
              index index.html index.htm;
          }
      }
      

      e. 效果图:

      image..png

      f.完整代码展示:

      http {
      
      	... ...
      	
      	server {
      	    listen 80;
      	    #填写证书绑定的域名
      	    server_name www.redamancyxun.fun;
      	    #将所有HTTP请求通过rewrite指令重定向到HTTPS。
      	    rewrite ^(.*)$ https://$host$1;
      	    location / {
      	        index index.html index.htm;
      	    }
      	}
      
          server {
      	    #HTTPS的默认访问端口443。
          	#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
          	listen 443 ssl;
      
       	    #填写证书绑定的域名
           	server_name www.redamancyxun.fun;
      
              #填写证书文件绝对路径
              ssl_certificate cert/redamancyxun.fun.pem;
          	#填写证书私钥文件绝对路径
          	ssl_certificate_key cert/redamancyxun.fun.key;
      
          	ssl_session_cache shared:SSL:1m;
          	ssl_session_timeout 5m;
      
          	#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
           	#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
          	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
          	ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
      
          	#表示优先使用服务端加密套件。默认开启
          	ssl_prefer_server_ciphers on;
      
      	    location / {
         		    root /var/www/html;
         		    index index.html index.htm;
      	    }
      	}
      }
      
    6. 执行以下命令,重启Nginx服务

      sudo systemctl reload nginx  #这会重新加载Nginx的配置文件,使任何更改生效,而不需要停止服务器或断开现有连接
      sudo /etc/init.d/nginx start  #启动Nginx服务
      
    7. 如果出现报错,输入下面命令查看详情

      systemctl status nginx.service  #查看详细的错误信息
      journalctl -xe  #查看日志以获取更多信息
      

      之后,复制报错信息给AI~


步骤三:验证SSL证书是否配置成功

  1. 证书安装完成后,通过访问证书的绑定域名验证该证书是否安装成功

    https://yourdomain  #需要将yourdomain替换成证书绑定的域名
    
  2. 如果网页地址栏出现小锁标志,表示证书已经安装成功

    image..png

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值