Nginx如何安装后增加SSL模块并配置443端口服务

发布时间:2021-11-25 11:23:23 作者:小新
阅读:522
亿速云ssl证书,防植入防监听防窃取! 查看>>

Nginx如何安装后增加SSL模块并配置443端口服务

引言

在当今互联网环境中,安全性是至关重要的。SSL(Secure Sockets Layer)协议及其继任者TLS(Transport Layer Security)协议为网络通信提供了加密和身份验证功能,确保数据在传输过程中不被窃取或篡改。对于Web服务器来说,配置SSL/TLS证书并启用HTTPS服务是保障用户数据安全的基本要求。

Nginx作为一款高性能的HTTP和反向代理服务器,广泛应用于各种Web服务场景。本文将详细介绍如何在已安装Nginx的基础上,增加SSL模块并配置443端口服务,以实现HTTPS访问。

1. 准备工作

在开始之前,确保你已经具备以下条件:

2. 检查Nginx是否已安装SSL模块

在开始配置之前,首先需要确认Nginx是否已经安装了SSL模块。可以通过以下命令查看Nginx的编译参数:

nginx -V

输出结果中如果包含--with-http_ssl_module,则表示Nginx已经安装了SSL模块。如果没有,则需要重新编译Nginx并添加SSL模块。

3. 重新编译Nginx以增加SSL模块

如果Nginx没有安装SSL模块,可以通过以下步骤重新编译Nginx并添加SSL模块。

3.1 下载Nginx源码

首先,下载与当前安装版本相同的Nginx源码包。可以从Nginx官网(https://nginx.org/en/download.html)下载。

wget https://nginx.org/download/nginx-1.20.1.tar.gz
tar -zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1

3.2 配置编译参数

在编译之前,需要获取当前Nginx的编译参数,以便在重新编译时保持一致。可以通过以下命令获取:

nginx -V

输出结果中会包含类似--prefix=/etc/nginx --sbin-path=/usr/sbin/nginx的编译参数。将这些参数复制下来,并在重新编译时使用。

接下来,配置编译参数并添加SSL模块:

./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --with-http_ssl_module

3.3 编译并安装

配置完成后,使用以下命令编译并安装Nginx:

make
sudo make install

3.4 验证SSL模块是否安装成功

重新编译安装完成后,再次使用nginx -V命令查看Nginx的编译参数,确认--with-http_ssl_module已经存在。

4. 配置SSL证书

在启用HTTPS服务之前,需要准备好SSL证书。SSL证书通常包括以下几个文件:

将证书文件上传到服务器的某个目录,例如/etc/nginx/ssl/

5. 配置Nginx以启用HTTPS服务

接下来,配置Nginx以启用HTTPS服务。编辑Nginx的配置文件,通常位于/etc/nginx/nginx.conf/etc/nginx/sites-available/default

5.1 创建新的Server块

在Nginx配置文件中,添加一个新的server块来监听443端口,并配置SSL证书:

server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate /etc/nginx/ssl/certificate.crt;
    ssl_certificate_key /etc/nginx/ssl/private.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

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

5.2 配置HTTP到HTTPS的重定向

为了确保所有流量都通过HTTPS访问,可以配置HTTP到HTTPS的重定向。在Nginx配置文件中,添加以下server块:

server {
    listen 80;
    server_name yourdomain.com;

    return 301 https://$host$request_uri;
}

5.3 重启Nginx

配置完成后,保存并退出编辑器。然后,使用以下命令重启Nginx以使配置生效:

sudo systemctl restart nginx

6. 验证HTTPS服务

完成配置后,可以通过浏览器访问https://yourdomain.com来验证HTTPS服务是否正常工作。如果一切顺利,浏览器地址栏会显示一个锁图标,表示连接是安全的。

6.1 使用OpenSSL验证

还可以使用OpenSSL工具来验证SSL证书的配置是否正确:

openssl s_client -connect yourdomain.com:443

如果配置正确,输出结果中会显示证书的详细信息。

7. 配置SSL优化

为了进一步提高HTTPS服务的性能和安全性,可以进行一些SSL优化配置。

7.1 启用HTTP/2

HTTP/2是HTTP协议的下一代版本,支持多路复用、头部压缩等特性,可以显著提高Web性能。在Nginx配置文件中,启用HTTP/2:

server {
    listen 443 ssl http2;
    server_name yourdomain.com;

    ssl_certificate /etc/nginx/ssl/certificate.crt;
    ssl_certificate_key /etc/nginx/ssl/private.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

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

7.2 配置OCSP Stapling

OCSP Stapling是一种优化SSL/TLS握手过程的技术,可以减少客户端验证证书的时间。在Nginx配置文件中,启用OCSP Stapling:

server {
    listen 443 ssl http2;
    server_name yourdomain.com;

    ssl_certificate /etc/nginx/ssl/certificate.crt;
    ssl_certificate_key /etc/nginx/ssl/private.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

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

7.3 配置HSTS

HSTS(HTTP Strict Transport Security)是一种安全策略,强制客户端使用HTTPS连接。在Nginx配置文件中,启用HSTS:

server {
    listen 443 ssl http2;
    server_name yourdomain.com;

    ssl_certificate /etc/nginx/ssl/certificate.crt;
    ssl_certificate_key /etc/nginx/ssl/private.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

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

8. 常见问题及解决方案

8.1 SSL证书不匹配

如果浏览器提示SSL证书不匹配,可能是由于证书的域名与服务器配置的域名不一致。请确保证书的域名与Nginx配置中的server_name一致。

8.2 证书链不完整

如果浏览器提示证书链不完整,可能是由于缺少中间证书。请确保证书文件中包含了完整的证书链,包括中间证书。

8.3 443端口被占用

如果Nginx无法启动,可能是由于443端口被其他服务占用。可以使用以下命令检查端口占用情况:

sudo netstat -tuln | grep 443

如果443端口被占用,可以停止相关服务或修改Nginx的监听端口。

9. 总结

通过本文的步骤,你已经成功在Nginx中增加了SSL模块,并配置了443端口的HTTPS服务。SSL/TLS证书的配置不仅提升了网站的安全性,还能增强用户对网站的信任。在实际应用中,建议定期更新SSL证书,并关注SSL/TLS协议的最新发展,以确保Web服务的安全性和性能。

希望本文对你有所帮助,祝你在Nginx的配置和使用中取得成功!

亿速云提供多种品牌、不同类型SSL证书签发服务,包含:域名型、企业型、企业型专业版、增强型以及增强型专业版,单域名SSL证书300元/年起。点击查看>>

推荐阅读:
  1. 服务器443端口与80端口的区别
  2. nginx增加新模块

开发者交流群:

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/jacklinnn/blog/4518390

ssl nginx

上一篇:怎么用Python做一个Telegram的新闻Bot

下一篇:Python怎么给dataframe循环命名

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
开发者交流群×