39.ssl证书https

ssl证书https

ssl证书获取方式

购买证书(免费的3个月有效期 到期更换 每年每个账号可申请20个免费)

自己充当CA机构生成假证

自己生成ssl证书

1. 创建存放证书的目录

[root@web01 ~]# mkdir -p /etc/nginx/ssl_key

2. 生成证书私钥

执行以下命令生成 RSA 私钥,过程中需要输入并确认密码(示例中密码为 1234):

[root@web01 ssl_key]# openssl genrsa -idea -out server.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
..................................................+++++
.................................................................................................................................................................................................+++++
e is 65537 (0x010001)
Enter pass phrase for server.key:    # 输入密码 1234
Verifying - Enter pass phrase for server.key: # 再次输入 1234
[root@web01 ssl_key]#ll   查看

3. 生成证书请求及自签名证书

接着执行以下命令生成有效期为 36500 天的自签名证书(server.crt),过程中会要求输入一些证书相关信息,如国家代码、省份名称、城市、组织名称等,示例中输入相应信息如下:

[root@web01 ssl_key]# openssl req -days 36500 -x509 \
> -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt
> Generating a RSA private key
> ...........................................................................+++++
> ..........+++++
> writing new private key to 'server.key'

-----

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,

If you enter '.', the field will be left blank.

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:CN
Locality Name (eg, city) []:BJ   
Organization Name (eg, company) [Internet Widgits Pty Ltd]:oldboy
Organizational Unit Name (eg, section) []:oldboy
Common Name (e.g. server FQDN or YOUR name) []:CN
Email Address []:11@qq.com

查看证书的有效时间

使用以下命令查看证书(server.crt)的有效时间:

[root@web01 ssl_key]# openssl x509 -in   /etc/nginx/ssl_key/server.crt   -noout -enddate
notAfter=Nov 23 00:40:38 2124 GMT

HTTP 证书配置

一、使用自生成证书的配置

  1. Nginx 配置文件内容(test.conf
    以下是在[root@web01 conf.d]目录下test.conf文件中关于使用自生成证书的相关 Nginx 配置示例,配置了针对test.oldboy.com域名的服务:
server {
        listen 443 ssl;
        server_name test.oldboy.com;
        ssl_certificate   ssl_key/server.crt;  //指定证书文件路径
        ssl_certificate_key  ssl_key/server.key;  //指定证书私钥文件路径
        location / {
                root /code;
                index index.html;
        }
}

#配置将用户访问http请求强制跳转https
server {
        listen 80;
        server_name test.oldboy.com;
        return 302 https://$server_name$request_uri;
}

同时,在/code目录下有对应的index.html文件(内容示例为web01...),并且需要将域名通过hosts解析到web01服务器

二、配置真实证书的步骤及相关配置

  1. 步骤概述
  • 购买证书:首先需要从相关证书颁发机构购买合适的证书,确保其符合业务需求以及服务器使用场景等要求。
  • 下载证书到本地:完成购买后,将证书文件下载到本地服务器相应位置,以便后续配置使用。
  • 配置到 Nginx 服务:在 Nginx 配置中进行相应设置,使其能正确使用该真实证书。
  1. Nginx 配置文件内容(test.conf)示例(针对test.linuxnc.com域名)
    如下同样是[root@web01 conf.d]目录下test.conf文件中关于配置真实证书时的 Nginx 配置示例,针对test.linuxnc.com域名做了类似的配置,配置中指定证书及私钥文件路径等信息:
server {
        listen 443 ssl;
        server_name test.linuxnc.com;
        ssl_certificate   ssl_key/server.crt;
        ssl_certificate_key  ssl_key/server.key;
        location / {
                root /code;
                index index.html;
        }
}

#配置将用户访问http请求强制跳转https
server {
        listen 80;
        server_name test.linuxnc.com;
        return 302 https://$server_name$request_uri;
}

集群实现 HTTPS 证书

1.集群部署ssl

(一)WEB01 配置静态页面

  1. 配置文件内容
    /etc/nginx/conf.d目录下创建test.conf,内容如下:
server {
        listen 80;
        server_name test.linuxnc.com;
        location / {
                root /code;
                index index.html;
        }
}
  1. 验证与重启
    执行nginx -t命令验证配置文件语法正确后,通过systemctl restart nginx重启 Nginx 服务。可使用curl 127.0.0.1进行简单测试。

(二)WEB02 配置静态页面

  1. 配置文件内容
    /etc/nginx/conf.d目录下编辑test.conf,内容如下:
server {
        listen 80;
        server_name test.linuxnc.com;

        location / {
        root /code/test;
        index index.html;
        }
}

同时确保/code/test/index.html文件存在且有对应内容(示例中内容为web02....)。

同时确保/code/test/index.html文件存在且有对应内容(示例中内容为web02....)。
\2. 验证与重启
同样执行nginx -t验证配置语法无误后,使用systemctl restart nginx重启 Nginx 服务。

(三)LB 负载均衡配置证书

  1. 配置文件内容
    /etc/nginx/conf.d目录下的test.conf配置如下:
server {
        listen 80;
        server_name test.linuxnc.com;
        return 302 https://$server_name$request_uri;
}


server {
    listen 443 ssl;
    server_name test.linuxnc.com;
    ssl_certificate   ssl_key/server.crt;
    ssl_certificate_key  ssl_key/server.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;

    location / {
    proxy_pass http://web;
    include proxy_params;
    proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
    }
}

upstream web {
     server 172.16.1.203:80;
     server 172.16.1.204:80;
}
  1. 证书拷贝与相关操作
    使用scp -r 10.0.0.7:/etc/nginx/ssl_key.将证书拷贝到 LB01 服务器,之后执行nginx -t验证配置文件语法,若无误则通过systemctl restart nginx重启 Nginx 服务,最后将hosts解析到10.0.0.5

2、配置 WordPress 实现 https 证书

(一)配置负载均衡

  1. 配置文件内容
    /etc/nginx/conf.d目录下创建wp.conf,内容如下:
upstream wp {
     server 172.16.1.7:80;
     server 172.16.1.8:80;
}
server {
    listen 443 ssl;
    server_name www.wp.com;
    ssl_certificate   ssl_key/server.crt;
        ssl_certificate_key  ssl_key/server.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;

    location / {
    proxy_pass http://wp;
    include proxy_params;
    proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
    }
}
server {
        listen 80;
        server_name www.wp.com;
        return 302 https://$server_name$request_uri;
}

(二)WEB01 和 WEB02 开启 PHP 支持 HTTPS

  1. 配置文件内容(以 WEB01 为例)
    /etc/nginx/conf.d目录下的wp.conf配置如下:
server {
        listen 80;
        server_name www.wp.com;
        root /code/wordpress;

        location / {
                index index.php index.html;
        }

        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param HTTPS on;        # 开启PHP对HTTPS的支持
        }
}

需在 WEB02 上进行类似配置操作,最终目的是要配置 WordPress、知乎、phpmyadmin 为 https 传输(此处后续可能还需针对知乎、phpmyadmin 做相应配置,当前提供内容未完整展示这两部分详细配置步骤)。

阿里云单台实现HTTPS

  1. 购买 ECS 服务器:选择按量付费的方式购买一台 ECS 服务器。

二、安装与配置 Nginx 服务

  1. 配置 Nginx 基础设置
    配置文件ceshi.conf相关内容如下,定义了如用户、进程、日志、事件等基础配置以及 HTTP 相关的通用配置,包括日志格式、访问日志路径、各类文件传输及连接相关设置等,还指定了要包含的其他配置文件路径等。
 server {
        listen       80;
        server_name  test.linuxnc.com;
        root         /code;

        include /etc/nginx/default.d/*.conf;

    }

创建一个简单的测试页面,示例如下:

[root@web01 nginx]# echo web01... > /code/index.html

可以通过curl 127.0.0.1进行本地测试,能看到返回页面内容 “web01…”。

三、配置 DNS 域名解析

按照相关要求进行域名解析配置,此处应关联好服务器对应的域名(示例中域名为test.linuxnc.com),可能涉及在域名管理后台等相关操作,文中未详细展示具体配置界面截图以外的详细步骤。

四、配置 nginx 实现 https 证书

  1. 上传证书到服务器
    将下载好的证书通过scp命令上传到服务器指定目录,示例如下:
[root@lb01 nginx]# scp -r ssl_key 39.104.76.191:/etc/nginx/
  1. 配置 Nginx 支持 HTTPS
    修改nginx.conf文件,在对应server配置块中添加 HTTPS 相关配置,如监听 443 端口并启用 SSL,指定证书及证书密钥文件路径等,同时添加从 80 端口重定向到 HTTPS(443 端口)的配置,如下所示:
server {
        listen       443 ssl;
        server_name  test.linuxnc.com;
        ssl_certificate   ssl_key/server.crt;
        ssl_certificate_key  ssl_key/server.key;
        root         /code;

        include /etc/nginx/default.d/*.conf;

    }
server {
        listen 80;
        server_name test.linuxnc.com;
        return 302 https://$server_name$request_uri;
    }
}

五、检查,重启,测试

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇