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*
1038 11
|
11月前
|
运维 监控 安全
阿里云SSL证书免费版与收费版有什么区别?免费版SSL证书申请及部署流程参考
在当今数字化时代,网站安全已成为每个网站运营者不可忽视的重要环节。阿里云数字证书管理服务为不同规模的网站提供了多种SSL证书类型和品牌,包括但不限于电商、小型企业、大型企业或个人等。这些SSL证书不仅能有效保护网站数据传输安全,还能提升用户对网站的信任度。本文将详细解析阿里云SSL证书的免费版与收费版之间的差异,并提供选购指南及申请流程,帮助您根据网站规模和业务需求选择最适合的证书。
|
9月前
|
网络协议 应用服务中间件 网络安全
阿里云SSL证书申请具体操作流程,以申请免费SSL证书为例
阿里云免费SSL证书由Digicert提供,单域名可申请20张,有效期3个月。通过数字证书管理控制台,完成购买、域名验证(DNS或文件)、提交审核后下载,支持Nginx、Apache等多服务器格式。
1299 0
|
10月前
|
安全 数据建模 网络安全
阿里云SSL证书价格一年多少钱?单域名和通配符SSL证书收费价格表
阿里云SSL证书提供免费及多种付费选择,免费版为DigiCert品牌,有效期3个月。付费证书涵盖DV、OV、EV类型,支持DigiCert、GlobalSign等品牌,价格从238元至万元不等,满足不同网站安全需求。
1185 0
|
算法 应用服务中间件 网络安全
阿里云WoSign“国密RSA双SSL证书”应用实践
阿里云WoSign品牌SSL证书是阿里云平台热销的国产品牌证书之一,支持签发国密合规的SM2算法SSL证书以及全球信任的RSA算法SSL证书,能够满足平台用户不同的SSL证书应用需求,同时为用户提供国密模块支持,实现“国密/RSA双证书部署”。
1726 6
阿里云WoSign“国密RSA双SSL证书”应用实践
|
数据建模 网络安全
阿里云SSL证书不同类型DV、OV和EV如何收费?单域名和通配符SSL价格整理
阿里云SSL证书提供免费和收费版本,涵盖DV、OV、EV多种类型。收费证书品牌包括DigiCert、GlobalSign等,价格从238元/年起。免费SSL证书由Digicert提供,单域名有效3个月,每个实名主体每年可领取20个。具体价格和详情见阿里云SSL官方页面。
|
运维 安全 数据建模
阿里云数字证书管理服务免费版和收费版SSL证书区别、收费标准、申请及部署教程参考
阿里云数字证书管理服务提供多种SSL证书类型和品牌,适用于不同规模的网站,包括但不限于电商、小型企业、大型企业或个人等。阿里云SSL证书有收费版的也有免费版的,有的新手用户由于是初次在阿里云申请SSL证书,可能不是很清楚免费版证书的申请和部署流程,本文为以图文形式为大家展示阿里云免费版SSL证书最新的申请及部署教程,以供参考。
|
算法 数据建模 应用服务中间件
阿里云2025智惠采购季,WoSign SSL证书优惠叠加使用攻略
阿里云2025智惠采购季,WoSign SSL证书折上折满减优惠!活动月期间(2025年03月01日至03月31日)活动折扣叠加满减优惠券,具体如何操作才能获取组合优惠价格呢?快来get优惠券组合使用攻略吧!
946 4