nginx配置https访问,证书相关密码设置&#


1. 安装nginx

参考博文:centos7中nginx安装
需要安装 openssl 和 openssl-dev,nginx编译时需要带上 with-http_ssl_module 模块

2. 生成证书

在 nginx安装目录下(如:/usr/local/nginx)创建一个ssl目录,用来存放证书文件,然后进入ssl目录,执行后面证书生成相关指令。

证书相关密码设置: SSLPWD=“123456”

2.1 创建私钥

执行命令:

openssl genrsa -des3 -passout pass:$SSLPWD -out demo.key 1024
  • -des3:使用des3 cbc模式对私钥文件进行加密
  • demo.key 是私钥文件名,可以自定义
  • $SSLPWD 为设置的私钥密码,这里指123456
  • -passout 通过该参数代替shell 进行密码输入,否则会提示输入密码

2.2 创建crs证书

执行命令:

openssl req -new -key demo.key -passin pass:$SSLPWD -subj "/C=CN/ST=Beijing/O=RS/OU=RS/CN=RDI-SERVER/emailAddress=Rs@163.com" -out demo.csr
  • 其中key文件就是第一步生成的私钥,demo为自定义的文件名
  • passin 参数代替shell自动输入密码,否则会提示输入密码
  • -subj 参数,设置其他相关信息

完成以上两步后,ssl中会生成demo.csr和demo.key两个文件:如下图

2.3 去除密码

在加载SSL支持的Nginx并使用上述私钥时除去必须的口令,否则会在启动nginx的时候需要输入密码,执行以下命令:

openssl rsa -in demo.key -passin pass:$SSLPWD -out demo.key

2.4 生成crt证书

执行命令:

openssl x509 -req -days 3650 -in demo.csr -signkey demo.key -out demo.crt
  • x509 命令主要用于创建、修改x509证书
  • days 设置证书有效时间(天数)

证书生成完毕,我们在ssl文件夹中可以看到生辰的证书文件,我们要用到的就是demo.crt和demo.key

3. 修改nginx配置

在nginx.conf配置文件中添加一个如下server:

server {
        listen  443 ssl;
        server_name  localhost;
        ssl_certificate      /usr/local/nginx/ssl/demo.crt;
        ssl_certificate_key  /usr/local/nginx/ssl/demo.key;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

启动nginx后,访问正常启动nginx后,使用 https://127.0.0.1:443 访问,可以正常跳转

4. ng安装脚本

#!/bin/bash

echo "----install nginx----"

target_path="/data"
pwd_path=`pwd`

[ ! -d $target_path ] && mkdir -p $target_path

# 安装依赖包
yum -y install gcc-c++  
yum -y install pcre pcre-devel  
yum -y install zlib zlib-devel  
yum -y install openssl openssl--devel 


# Install nginx
echo "----nginx----"
tar -xvf nginx-1.19.5.tar.gz -C $target_path > /dev/null
cd $target_path/nginx-1.19.5
./configure --with-http_ssl_module
make 
sudo make install
cd $pwd_path

echo "----config nginx----"
sudo cp nginx.conf /usr/local/nginx/conf/nginx.conf

#sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

# 创建ssl证书
SSLPATH="/usr/local/nginx/ssl"
SSLPWD="123456"
[ ! -d $SSLPATH ] && mkdir -p $SSLPATH
cd $SSLPATH
openssl genrsa -des3 -passout pass:$SSLPWD -out demo.key 1024
openssl req -new -key demo.key -passin pass:$SSLPWD -subj "/C=CN/ST=Beijing/O=RS/OU=RS/CN=RDI-SERVER/emailAddress=Rs@163.com" -out demo.csr
openssl rsa -in demo.key -passin pass:$SSLPWD -out demo.key
openssl x509 -req -days 3650 -in demo.csr -signkey demo.key -out demo.crt

echo "----add boot-start----"
if [ -d /lib/systemd/system/ ]; then 
cat>/lib/systemd/system/nginx.service<<EOF
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

systemctl enable nginx.service
systemctl start nginx.service
else 
sudo /usr/local/nginx/sbin/nginx
fi

[ -d $target_path/nginx-1.19.5 ] && rm -rf $target_path/nginx-1.19.5

echo "----nginx service started----"


相关内容