Linux服务之nginx服务篇四(配置https协议访问)

时间:2022-04-29 14:59:50

一、配置nginx支持https协议访问

  编译安装nginx的时候需要添加相应的模块--with-http_ssl_module和--with-http_gzip_static_module(可通过/usr/local/nginx/sbin/nginx -V来查看nginx编译参数)

(yum安装不需要)

二、防火墙开启https协议默认端口443

1、vi /etc/sysconfig/iptables #编辑防火墙配置文件,添加以下代码:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
:wq! #保存退出
service iptables restart #重启防火墙

2、或者使用firewall-cmd添加防火墙规则

firewall-cmd --add-port=443/tcp
firewall-cmd --add-port=443/tcp --permanent

三、创建https证书

确保机器上安装了OpenSSL和openssl-devel

yum install openssl openssl-devel #CentOS使用yum命令安装
mkdir /etc/nginx/ssl #创建证书存放目录
cd /etc/nginx/ssl #进入目录 创建服务器私钥:
openssl genrsa -des3 -out server.key 1024 #根据提示输入证书口令(ryz123) 创建签名请求的证书(CSR):
openssl req -new -key server.key -out server.csr #输入上面设置的口令(ryz123)
#根据提示输入相应的信息
Country Name (2 letter code) [XX]:cn #国家
State or Province Name (full name) []:shanxi #省份
Locality Name (eg, city) [Default City]:taiyuan #城市
Organization Name (eg, company) [Default Company Ltd]:3344 #公司
Organizational Unit Name (eg, section) []:yunwei #部门
Common Name (eg, your name or your server's hostname) []:3344 #主机名称
Email Address []:[email protected] #邮箱
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456 #证书请求密钥,CA读取证书的时候需要输入密码
An optional company name []:3344 #公司名称,CA读取证书的时候需要输入密码 openssl rsa -in server.key -out server_nopassword.key #对key进行解密
openssl x509 -req -days 365 -in server.csr -signkey server_nopassword.key -out server.crt #标记证书使用上述私钥(ryz123)和CSR [root@s2 ssl]# ls
server.crt server.csr server.key server_nopassword.key
[root@s2 ssl]# pwd
/etc/nginx/ssl

四、修改nginx的配置文件,网站添加安全验证(https)

 server {
listen 80;
server_name www.3344.com;
location / {
rewrite ^(.*)$ https://$host$1 permanent;  #把http协议重定向到https上面
}
}
server {
listen 443 ssl;
server_name www.3344.com;
ssl_certificate "/etc/nginx/ssl/server.crt";
ssl_certificate_key "/etc/nginx/ssl/server_nopassword.key";
     fastcgi_param HTTPS $https if_not_empty; #有https协议时自动使用https,否则忽略这个参数。
root /var/www/html;
}

Linux下nginx配置https协议访问如上。