搭建https网站

环境:centos 7

nginx 版本:1.19.1

1 安装nginx

按照 https://www.runoob.com/linux/nginx-install-setup.html 教程安装即可,记得安装最新版。

wget http://nginx.org/download/nginx-1.19.1.tar.gz

nginx安装目录配置 nginx.conf 如下:/usr/local/webserver/nginx/conf

2 自签名证书

2.1 CA根证书的生成步骤

新建一个文件夹ssl

mkdir ssl
cd ssl

2.1.1 生成私钥

生成CA私钥(.key)–>生成CA证书请求(.csr)–>自签名得到根证书(.crt)(CA给自已颁发的证书)。

# Generate CA private key 
openssl genrsa -out ca.key 2048 

1597046435726

2.1.2 生成证书请求文件

这个过程会要求输入很多信息如国家、城市、组织信息等,其中 Common Name (eg, your name or your server's hostname)必填项 ,可以是域名或者 IP,其他都可以回车跳过,但是这样的话在签名证书时候会报错,下一章详述,不过自签名证书不影响。

# Generate CSR 
openssl req -new -key ca.key -out ca.csr

1597046507003

2.1.3 生成自签名证书

# Generate Self Signed certificate(CA 根证书)
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

1597046586371

2.2 用户证书的生成步骤

2.2.1. 生成私钥

生成私钥(.key)–>生成证书请求(.csr)–>用CA根证书签名得到证书(.crt)

服务器端用户证书:

# private key
$openssl genrsa -des3 -out server.key 1024 

1597046728463

2.2.2 生成证书请求

# generate csr
$openssl req -new -key server.key -out server.csr

1597046781761

2.2.3 生成证书(根证书对用户的证书请求签名,最终生成用户证书)

使用 x509 工具生成证书,因为它默认不使用 openssl.cnf

# generate certificate
$openssl x509 -req -in server.csr -CA ca.crt \
 -CAkey ca.key -out server.crt -CAcreateserial

1597046922337

2.2.4 验证证书有效性

openssl verify -CAfile ca.crt server.crt

1597047002938

2.2.5 导出证书

cat server.crt server.key > server.pem

1597047735585

3 配置nginx

将openssl生成的证书文件复制到nginx的目录下:

[root@localname ~]#  cp -r ssl  /usr/local/webserver/nginx/conf/ssl

3.1.1 配置nginx.conf文件

配置/usr/local/webserver/nginx/conf目录下的nginx.conf文件

vim  /usr/local/webserver/nginx/conf/nginx.conf

修改文件如下:

1597047296881

server
  {
    listen 443;#监听端口
    server_name 192.168.10.136;#域名
    index index.html index.htm index.php;
    root /usr/local/webserver/nginx/html;#站点目录
   #注意这些路径是相对于/etc/nginx/nginx.conf文件位置
    ssl on;
    ssl_certificate ssl/server.crt;
    ssl_certificate_key ssl/server.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
    ssl_prefer_server_ciphers on;


    location ~ .*\.(php|php5)?$
    {
      #fastcgi_pass unix:/tmp/php-cgi.sock;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      include fastcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
    {
      expires 30d;
  # access_log off;
    }
    location ~ .*\.(js|css)?$
    {
      expires 15d;
   # access_log off;
    }
    access_log off;
  }

3.1.2 测试 /停止/重启nginx服务

编译/usr/local/webserver/nginx/sbin/nginx -t

1597044719436

重启 nginx:/usr/local/webserver/nginx/sbin/nginx -s stop

启动:/usr/local/webserver/nginx/sbin/nginx

浏览器输入(本机ip地址):https://192.168.10.136/

1597044598226

1597044868039

这时候发现浏览器提示不安全的链接,这个时候将根证书ca.crt导入浏览器,重启,发现提示消失了.

4 nginx日常操作命令

nginx -t 测试配置文件
nginx -s reload 修改配置后重载生效
nginx -s reopen 重新打开日志文件
nginx -s stop 快速停止
nginx -s quit

查看nginx进程
ps -ef | grep nginx

REF

https://www.gokuweb.com/operation/d95eae05.html
https://blog.csdn.net/liuchunming033/article/details/48470575

https://juejin.im/post/6844903729632641031

文章目录
  1. 1 安装nginx
  2. 2 自签名证书
    1. 2.1 CA根证书的生成步骤
      1. 2.1.1 生成私钥
      2. 2.1.2 生成证书请求文件
      3. 2.1.3 生成自签名证书
    2. 2.2 用户证书的生成步骤
      1. 2.2.1. 生成私钥
      2. 2.2.2 生成证书请求
      3. 2.2.3 生成证书(根证书对用户的证书请求签名,最终生成用户证书)
      4. 2.2.4 验证证书有效性
      5. 2.2.5 导出证书
  3. 3 配置nginx
    1. 3.1.1 配置nginx.conf文件
    2. 3.1.2 测试 /停止/重启nginx服务
  • 4 nginx日常操作命令
  • REF