nginx安装部署ssl证书,同时支持http与https方式访问

简介: 为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。

首先,我们一般开发的服务为http服务,并用nginx代理,若要支持https方式访问,则必须要生成并安装ssl证书

1.第一步 生成证书

(1)进入“/usr/local/nginx”目录,执行以下命令,生成RSA密钥。
----须知---
对于CentOS 7.6或CentOS 8.1下通过镜像站RPM包安装的Nginx,请将以下命令中的“/usr/local/nginx”目录替换为“/etc/nginx”。

  cd /usr/local/nginx openssl genrsa -des3 -out server_2048.key 2048

系统提示需要两次输入密码,请设置为相同的密码,完成后会生成server_2048.key文件。 image.png
说明 可通过如下命令实现免密码使用此server_2048.key文件。

   openssl rsa -in server_2048.key -out server_2048.key

image.png
(2)创建服务器证书的申请文件。
openssl req -new -key server_2048.key -out server_2048.csr image.png 输入(1)中设置的密码。Country Name填写为CN,其他选项直接按回车即可。如果已经设置免密码使用server_2048.key文件,则无需输入密码。
(3)重写RSA密钥。

   openssl rsa -in server_2048.key -out server_2048.key

image.png
输入1中设置的密码。如果已经设置免密码使用server_2048.key文件,则无需输入密码。
(4)生成证书。

   openssl x509 -req -days 365 -in server_2048.csr -signkey server_2048.key -out server_2048.crt

image.png

2.第二步 Nginx的ssl模块安装   

ngixn需要支持ssl模块,所以需要需要安装。可参考https://www.jb51.net/server/317094cpp.htm
进入到目录的sbin目录下,输入

   #注意这里是大写的V,小写的只显示版本号    
  ./nginx -V

如果出现 (configure arguments: --with-http_ssl_module), 则已安装(下面的步骤可以跳过,直接进行第五步)。 一般情况下都是不存在ssl模块的,接下来进入到你的解压缩后的nginx目录,注意这里不是nginx安装目录,是解压缩后的目录。

   ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

然后执行

   make 
  #切记不要执行make install,否则会重新安装nginx

接下来使用新的nginx文件替换掉之前安装目录sbin下的nginx,注意这里的替换的时候可以先将之前的文件备份下,停掉nginx服务

  #停止nginx服务
  ./nginx -s stop 
  #替换之前的nginx
   cp /usr/nginx/objs/nginx /usr/local/nginx/sbin

成功之后,进入到nginx安装目录下,查看ssl时候成功

  ./nginx -V   
  #可以看到这里出现了configure arguments: --with-http_ssl_module   证明已经安装成功
3.第三步 配置HTTPS功能 Http功能    

配置HTTPS功能
---须知---
对于CentOS 7.6或CentOS 8.1下通过镜像站RPM包安装的Nginx 1.14.2或Nginx 1.19.3版本,请将以下命令中的“/usr/local/nginx”目录替换为“/etc/nginx”。
(1)打开nginx.conf配置文件

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

(2)按“i”进入编辑模式,修改以下内容。
将“#user nobody;”修改为“user root;”。
将“# HTTPS server”模块下的“#”全部去掉。
将“# HTTPS server”模块下的“listen 443 ssl;”修改为“listen 20000 ssl;”。
将“# HTTPS server”模块下的“ssl_certificate cert.pem;”修改为“ssl_certificate /usr/local/nginx/server_2048.crt;”。
将“# HTTPS server”模块下的“ssl_certificate_key cert.key;”修改为“ssl_certificate_key /usr/local/nginx/server_2048.key;”。
修改后内容:

user  root;
...
# HTTPS server
    #
    server {
   
         listen       20000 ssl;
         server_name  localhost;
         ssl_certificate      /usr/local/nginx/server_2048.crt;
         ssl_certificate_key  /usr/local/nginx/server_2048.key;
         ssl_session_cache    shared:SSL:1m;
         ssl_session_timeout  5m;
         ssl_ciphers  HIGH:!aNULL:!MD5;
         ssl_prefer_server_ciphers  on;
         location / {
   
             root   html;
             index  index.html index.htm;
         }
     }

配置HTTP功能
(1)打开nginx.conf配置文件

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

按“i”进入编辑模式,修改以下内容。
将“#user nobody;”修改为“user root;”。
将“http”模块下的“listen 80;”修改为“listen 10000;”。
若您是在CentOS 8.1(7.6)系统下使用RPM方式安装Nginx 1.14.2(1.19.3),那么HTTP功能的listen监测端口需要在“/etc/nginx/conf.d/default.conf”文件中修改。
修改后内容:
user root;
...
http {
include mime.types;
default_type application/octet-stream;

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';

#access_log  logs/access.log  main;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;

server {
    listen       10000;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location /xxhcl {
        proxy_pass http://10.1.1.1:8081; 
        proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header x_real_ipP $remote_addr;
                    proxy_set_header remote_addr $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_http_version 1.1;
                    proxy_connect_timeout 4s;
                    proxy_read_timeout 1200s;
                    proxy_send_timeout 1200s;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "upgrade";

    }
 }

}
...

保存之后重新ngxin即可完成部署,如有问题可查看/logs/下log日志
参考文献https://www.hikunpeng.com/document/detail/zh/kunpengwebs/ecosystemEnable/Nginx/kunpengnginx_02_0016.html

相关文章
|
11月前
|
XML JSON API
识别这些API接口定义(http,https,api,RPC,webservice,Restful api ,OpenAPI)
本内容介绍了API相关的术语分类,包括传输协议(HTTP/HTTPS)、接口风格(RESTful、WebService、RPC)及开放程度(API、OpenAPI),帮助理解各类API的特点与应用场景。
|
11月前
|
Android开发 Kotlin
|
安全 网络安全 数据安全/隐私保护
网页安全演进:HTTP、HTTPS与HSTS
这整个进程实质上是网页安全由“裸奔”到“穿衣”再到“绑带”的演变史。它保障了数据的机密性和完整性,降低了中间人攻击的风险,最终实现了更自由、更安全的网络环境。但别忘了,技术永远在发展,网络安全的赛跑也永无终点。*ENDPOINT*
1109 11
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
423 19
|
安全 网络安全 流计算
修改代码以确保对SSL和HTTP异常的正确处理。
记得,在海上和代码世界里,风暴总是突如其来。但只要你的代码准备妥当,合理地处理SSL和HTTP异常,你的小船就能安全航行,最终到达它的目的地。
258 12
|
前端开发 应用服务中间件 nginx
nginx部署之https访问按照不同路径访问不同项目
上一篇介绍过如何在一个nginx上使用同一个端口部署多个web项目进行访问.具体内容可以参考:nginx支持一个端口访问多个前端项目(http以及https).
|
Web App开发 应用服务中间件 nginx
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
1101 87
|
10月前
|
编解码 应用服务中间件 Linux
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
734 1

热门文章

最新文章