SSL安装完全手册-亲测可用

1.安装openssl 相关基础软件 - 如已安装可跳过,配置nginx时报以下错误信息,是因为服务器安装openssl基础软件

/configure 

时提示以下错误:

./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl= option.

解决方法:

执行以下命令:

yum -y install openssl openssl-devel
执行成功之后再执行
./configure

Configuration summary
  + using system PCRE library
  + using system OpenSSL library
  + md5: using OpenSSL library
  + sha1: using OpenSSL library
  + using system zlib library
  + jemalloc library is disabled

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx dso module path: "/usr/local/nginx/modules/"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"
看到最后这样的输出,就是配置成功了。

2.SSL证书安装指南

SSL证书安装指南

通过SSL证书服务购买并签发证书后,您可以通过SSL证书控制台将已签发的证书下载到本地,并根据需要将证书安装到要使用证书的环境。

前提条件

已通过SSL证书服务购买并签发下载证书。

在服务器上安装证书

通过SSL证书控制台下载证书到本地后,您还需要将已下载的证书上传到Web服务器并修改服务器的相关配置,才能使SSL证书生效。

不同Web服务器安装SSL证书的具体操作不同。以下内容介绍了在主流Web服务器上安装SSL证书的方法。

Web服务器类型 证书安装方法
Nginx、Tengine 在Nginx(或Tengine)服务器上安装证书
Apache Tomcat 7(及以下版本)
  • 安装PFX格式证书
  • 安装JKS格式证书
Apache Tomcat 8(及以上版本) CentOS系统Tomcat 8.5或9部署SSL证书
Apache(httpd) 在Apache服务器上安装SSL证书
Apache 2 Ubuntu系统Apache 2部署SSL证书
IIS 在IIS服务器上安装SSL证书
Jetty 在Jetty服务器上安装SSL证书
JBoss 在JBoss服务器上安装SSL证书
GlassFish 在GlassFish服务器上安装SSL证书

3.安装Nginx 配置SSL插件

通过SSL证书服务购买和签发证书后,您可以将已签发的证书下载并安装到Nginx(或Tengine)服务器上。本文介绍了下载SSL证书并在Nginx(或Tengine)服务器上安装证书的具体操作。

背景信息

本文以CentOS 8操作系统、Nginx 1.14.1服务器系统为例进行说明。由于服务器系统版本不同,您在操作过程中使用的命令可能会略有区别。

本文中出现证书文件名称的地方,统一使用cert-file-name为例进行描述。例如,本文中用到的证书文件为cert-file-name.pem、证书密钥文件为cert-file-name.key。

注意 您在实际操作过程中,需要根据示例代码中的提示,将cert-file-name替换成您的证书文件的名称。关于如何获取证书文件的名称,请参见步骤1。

步骤1:下载证书到本地

  1. 登录SSL证书控制台。
  2. 概览页面,单击证书列表上方的证书状态下拉列表,并选择已签发

    SSL安装完全手册-亲测可用_第1张图片

    该操作将会筛选出所有已经通过CA机构签发的证书。

  3. 定位到要下载的证书,单击操作列下的下载
  4. 证书下载页面,定位到Nginx服务器,单击操作列下的下载

    该操作会将Nginx服务器证书压缩包下载到本地,并保存在浏览器的默认下载位置。

  5. 打开浏览器的默认下载位置,解压已下载的Nginx证书压缩包文件。解压后您将会获得以下文件:

    SSL安装完全手册-亲测可用_第2张图片

    • PEM格式的证书文件。

      注意 在后续安装证书的操作中,您必须使用真实的证书文件名称替换示例代码中的cert-file-name

      PEM格式的证书文件是采用Base64编码的文本文件,您可以根据需要将证书文件修改成其他格式。关于证书格式的更多信息,请参见主流数字证书都有哪些格式。

    • 可选:KEY格式的证书密钥文件。

      注意 如果您在申请证书时将CSR生成方式设置为手动填写,则下载的证书文件压缩包中不会包含KEY文件,您需要手动创建证书密钥文件。

      SSL安装完全手册-亲测可用_第3张图片

  6. 在Nginx服务器上安装证书。根据您是否使用独立的Nginx服务器,安装证书的操作不同:
    • 如果您使用的是独立服务器,请参见步骤2:(可选)在Nginx独立服务器上安装证书。
    • 如果您使用的是虚拟主机,请参见
      步骤2:(可选)为Nginx虚拟主机配置SSL证书。

步骤2:(可选)在Nginx独立服务器上安装证书

  1. 登录Nginx服务器。

    例如,您可以使用远程登录工具(例如,PuTTY、Xshell)登录服务器。

  2. 执行以下命令,在Nginx安装目录(默认为/usr/local/nginx/conf)下创建一个用于存放证书的目录(命名为cert)。放大查看复制代码
    cd /usr/local/nginx/conf  #进入Nginx默认安装目录。如果您修改过默认安装目录,请根据实际配置进行调整。
    mkdir cert  #创建证书目录,命名为cert。
  3. 使用远程登录工具(例如,PuTTY、Xshell)附带的本地文件上传功能,将本地证书文件和密钥文件上传到Nginx服务器的证书目录(示例中为/usr/local/nginx/conf/cert)。

    注意 如果您在申请证书时将CSR生成方式设置为手动填写,请将您手动创建的证书密钥文件上传到/usr/local/nginx/conf/cert目录。

  4. 编辑Nginx配置文件(nginx.conf),修改与证书相关的配置内容。
    1. 执行以下命令,打开配置文件。使用示例命令前,请注意:nginx.conf默认保存在/usr/local/nginx/conf目录下。如果您修改过nginx.conf的位置,请将/usr/local/nginx/conf/nginx.conf替换成修改后的位置。放大查看复制代码
      vim /usr/local/nginx/conf/nginx.conf
    2. i键进入编辑模式。
    3. 在配置文件中定位到HTTP协议代码片段(http{}),并在HTTP协议代码里面添加以下server配置(如果server配置已存在,按照以下注释内容修改相应配置即可)。使用示例代码前,请注意替换以下内容:
      • yourdomain.com:替换成证书绑定的域名。

        如果您购买的是单域名证书,需要修改为单域名(例如www.aliyun.com);如果您购买的是通配符域名证书,则需要修改为通配符域名(例如*.aliyun.com)。

      • cert-file-name.pem:替换成您在步骤3上传的证书文件的名称。
      • cert-file-name.key:替换成您在步骤3上传的证书密钥文件的名称。
      放大查看复制代码
      #以下属性中,以ssl开头的属性表示与证书配置有关。
      server {
          listen 443 ssl;
          #配置HTTPS的默认访问端口为443。
          #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
          #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
          server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
          root html;
          index index.html index.htm;
          ssl_certificate cert/cert-file-name.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
          ssl_certificate_key cert/cert-file-name.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
          ssl_session_timeout 5m;
          ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
          #表示使用的加密套件的类型。
          ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
          ssl_prefer_server_ciphers on;
          location / {
              root html;  #站点目录。
              index index.html index.htm;
          }
      }
    4. 可选:设置HTTP请求自动跳转HTTPS。如果您希望所有的HTTP访问自动跳转到HTTPS页面,则可以在需要跳转的HTTP站点下添加以下rewrite语句。

      使用示例代码前,请注意将yourdomain.com替换成证书绑定的域名。

      放大查看复制代码
      server {
          listen 80;
          server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
          rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
          location / {
              index index.html index.htm;
          }
      }
      
    5. 修改完成后,按Esc键、输入:wq!并按Enter键,保存修改后的配置文件并退出编辑模式。
  5. 执行以下命令,重启Nginx服务。放大查看复制代码
    cd /usr/local/nginx/sbin  #进入Nginx服务的可执行目录。
    ./nginx -s reload  #重新载入配置文件。
    如果重启Nginx服务时收到报错,您可以使用以下方法进行排查:
    • 收到the "ssl" parameter requires ngx_http_ssl_module报错:您需要重新编译Nginx并在编译安装的时候加上--with-http_ssl_module配置。
    • 收到"/cert/3970497_pic.certificatestests.com.pem":BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/cert/3970497_pic.certificatestests.com.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)报错:您需要去掉证书相对路径最前面的/。例如,您需要去掉/cert/cert-file-name.pem最前面的/,使用正确的相对路径cert/cert-file-name.pem
  6. 验证证书是否安装成功。

    具体操作,请参见步骤3:验证是否安装成功

步骤2:(可选)为Nginx虚拟主机配置SSL证书

  1. 登录您的虚拟机。
  2. 在Web目录下创建cert目录,并将下载的证书文件和密钥文件拷贝到cert目录中。
  3. 打开虚拟主机配置文件,将以下内容复制粘贴到文件末尾。

    说明 不同服务器系统的虚拟主机配置文件不同,例如,Nginx服务器默认是*.conf、Apache服务器默认是vhosts.conf等。关于虚拟主机配置文件的具体路径,请参照服务器使用说明中关于开启虚拟主机方法的介绍。

    放大查看复制代码
    server {
        listen 80;
        server_name localhost;
        location / {
            index index.html index.htm;
        }
    }
    server {
        listen 443 ssl;
        server_name localhost;
        root html;
        index index.html index.htm;
        ssl_certificate cert/cert-file-name.pem;   #需要将cert-file-name.pem替换成已上传的证书文件的名称。
        ssl_certificate_key cert/cert-file-name.key;   #需要将cert-file-name.key替换已上传的证书密钥文件的名称。
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
            index index.html index.htm;
        }
    }
  4. 保存vhost.conf或*.conf文件并退出。
  5. 可选:设置HTTP请求自动跳转HTTPS。如果您希望所有的HTTP访问自动跳转到HTTPS页面,则可以在Web目录下打开.htaccess文件(如果没有,需新建该文件),并添加以下rewrite语句。放大查看复制代码
    RewriteEngine On
    RewriteCond %{HTTP:From-Https} !^on$ [NC]
    RewriteCond %{HTTP_HOST} ^(www.)?yourdomain.com$ [NC]   #需要将yourdomain.com替换成证书绑定的域名。
    RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R=301,L]   #需要将yourdomain.com替换成证书绑定的域名。
  6. 重启虚拟主机。

    注意 证书安装成功后,您需要在虚拟主机上配置伪静态规则,这样您的网站才能全站都支持HTTPS,否则只有网站的主页支持HTTPS,网站的子目录将不支持HTTPS。

  7. 验证证书是否安装成功。

    具体操作,请参见步骤3。

步骤3:验证是否安装成功

证书安装完成后,您可通过访问证书的绑定域名验证该证书是否安装成功。放大查看复制代码

https://yourdomain.com   #需要将yourdomain.com替换成证书绑定的域名。

如果网页地址栏出现小锁标志,表示证书已经安装成功。

不同类型证书安装成功后的效果不同,具体如下:

  • DV SSL、OV SSL数字证书部署在服务器上后,您的浏览器访问网站时,将会展示以下效果。

    DV/OV证书安装效果图

  • EV SSL数字证书部署在服务器上后,您的浏览器访问网站时,将会展示以下效果。

    SSL安装完全手册-亲测可用_第4张图片

如果验证时出现访问异常,请参照下表进行排查。放大查看

异常现象 可能原因 处理方法
通过HTTPS无法正常访问您的网站。 安装证书的Nginx服务器的443端口未开放或被其他工具拦截。

请参照对应的服务器安全设置指南,配置开放服务器的443端口。

收到网站提示“您与网站之间的连接未完全安全”。 您的网站代码中调用的是HTTP协议。 您需要在网站代码中把HTTP协议修改为HTTPS协议。

说明 不同网站代码的实现逻辑可能存在差异,请您根据具体情况进行修改。

收到网站提示“该网站未根据工信部相关法律进行备案”。
  • 您的网站未完成备案,未在接入商处完成备案接入。
  • 您的网站内容与备案信息不符、备案信息不准确、网站存在不适宜传播的内容等。

请前往备案服务商的系统进行网站备案。

相关文档

你可能感兴趣的:(SSL,linux,ssl,网络协议,网络)