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

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
Elasticsearch Serverless检索通用型,资源抵扣包 100CU*H
简介: 为了使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

相关文章
|
14天前
|
安全 网络安全 流计算
修改代码以确保对SSL和HTTP异常的正确处理。
记得,在海上和代码世界里,风暴总是突如其来。但只要你的代码准备妥当,合理地处理SSL和HTTP异常,你的小船就能安全航行,最终到达它的目的地。
41 12
|
18天前
|
域名解析 网络协议 网络安全
SSL证书验证全攻略:DNS/HTTP/手动解析怎么选?
SSL证书在网络安全中至关重要,1Panel提供三种验证方式:DNS验证、HTTP验证和手动解析。DNS验证便捷,适合CDN网站;HTTP验证快速,需服务器在线;手动解析灵活,但操作复杂。根据需求选择合适确认方式,定期检查证书状态。
218 2
|
4月前
|
网络安全 开发工具 git
解决 Git 访问 GitHub 时的 SSL 错误
通过上述步骤,可以有效解决 Git 访问 GitHub 时的 SSL 错误。推荐优先更新 CA 证书和正确配置 Git 使用 CA 证书,避免禁用 SSL 验证。如果问题持续,可以切换到 SSH 方式访问 GitHub,确保连接的安全性和稳定性。希望这些内容对您的学习和工作有所帮助。
622 3
|
5月前
|
存储 应用服务中间件 Linux
nginx配置证书和私钥进行SSL通信验证
nginx配置证书和私钥进行SSL通信验证
214 4
|
6月前
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
543 4
|
16天前
|
安全 网络安全 Python
应对requests 2.28.x版本中SSL证书验证失败的错误处理方法。
在你安全地解决了这一切之后,你的请求就能够在HTTPS的加持下,犹如骑士横扫战场,高枕无忧地传递信息了。记住,网络的世界里,安全永远是你的头号任务。遵循正道,才能让你的代码在数据的草原上,驰骋千里。
55 16
|
4月前
|
安全 网络协议 搜索推荐
【荐】免费一年SSL证书申请方法全攻略
锁图 申请免费一年SSL证书的优势包括:提升网站安全性,避免中间人攻击;增强用户信任感;改善SEO排名;降低安全成本。申请流程如下: 1. 访问JoySSL官网选择免费证书套餐。 2. 填写注册信息并输入注册码230922。 3. 验证域名所有权,通常通过电子邮件或DNS设置中的TXT记录。 4. 下载并安装证书到服务器。 5. 检查浏览器地址栏是否显示安全锁图标及“https”。 大部分免费SSL证书有效期为一年,到期后需重新申请或升级付费版。通过上述步骤,您可轻松为网站启用免费SSL证书,保障数据安全并提升用户体验。
|
安全 网络安全 数据安全/隐私保护
IP申请SSL证书的条件和方法
IP申请SSL证书的条件和方法 互联网信息安全时代,网站部署SSL证书能实现HTTPS加密。通常SSL证书是颁发给域名的,但很多企事业单位需要IP地址实现HTTPS加密,那么IP能申请SSL证书吗?小编了解到数安时代GDCA能为IP地址颁发SSL证书。
9771 0
|
6月前
|
网络协议 应用服务中间件 网络安全
IP申请SSL证书的条件和方法
为IP地址申请SSL证书与域名证书流程不同,主要因SSL基于域名验证。部分CA允许为公有或私有IP地址申请证书,需满足拥有IP所有权、支持单IP或自签名证书、IP可公开访问及符合CA政策等条件。申请步骤包括访问CA官网、选择证书类型、提交申请、验证所有权并安装证书。替代方案是使用自签名证书,适合内部网络或开发环境。
OSZAR »