服务器之家:专注于服务器技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Nginx - nginx结合openssl实现https的方法

nginx结合openssl实现https的方法

2021-08-18 20:57七月七日清 Nginx

这篇文章主要介绍了基于nginx结合openssl实现https的方法,准备工作大家需要安装nginx服务,具体操作过程跟随小编一起看看吧

在未使用SSL证书对服务器数据进行加密认证的情况下,用户的数据将会以明文的形式进行传输,这样一来使用抓包工具是可以获取到用户密码信息的,非常危险。而且也无法验证数据一致性和完整性,不能确保数据在传输过程中没被改变。所以网站如果有涉及用户账户等重要信息的情况下通常要配置使用SSL证书,实现https协议。

在生产环境中的SSL证书都需要通过第三方认证机构购买,分为专业版OV证书(浏览器地址栏上不显示企业名称)和高级版EV(可以显示企业名称)证书,证书所保护的域名数不同也会影响价格(比如只对www认证和通配*认证,价格是不一样的),且不支持三级域名。测试中可以自己作为证书颁发机构来制作证书,浏览器会显示为红色,代表证书过期或者无效,如果是黄色的话代表网站有部分连接使用的仍然是http协议。

不管使用哪种方法,在拿到证书后对Nginx的配置都是一样的,所以这里以搭建OpenSSL并制作证书来进行完整说明

一、准备环境

1)nginx服务

2)ssl模块

  1. [root@ns3 ~]# systemctl stop firewalld
  2. [root@ns3 ~]# iptables -F
  3. [root@ns3 ~]# setenforce 0
  4. [root@ns3 ~]# yum -y install pcre zlib pcre-devel zlib-devel
  5. [root@ns3 ~]# tar xf nginx-1.16.0.tar.gz -C /usr/src/
  6. [root@ns3 ~]#cd /usr/src/nginx-1.16.0
  7. [root@ns3 ~]#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module&&make && make install #后续需要的模块一次性安装

3)检测openssl是否安装

  1. [root@ns3 ~]# rpm -qa openssl 2 openssl-1.0.1e-42.el7.x86_64

若没有安装

  1. [root@ns3 ~]# yum -y install openssl openssl-devel

二、创建根证书CA

1、生成CA私钥

  1. [root@ns3 ~]# cd zhengshu/
  2. [root@ns3 zhengshu]# openssl genrsa -out local.key 2048
  3. Generating RSA private key, 2048 bit long modulus
  4. ...........................................................................................................................................................................................................................+++
  5. ............................................................................................................................................................................................+++
  6. e is 65537 (0x10001)
  7. [root@ns3 zhengshu]# ls
  8. local.key

 2、生成CA证书请求

  1. [root@ns3 zhengshu]# openssl req -new -key local.key -out local.csr
  2. You are about to be asked to enter information that will be incorporated
  3. into your certificate request.
  4. What you are about to enter is what is called a Distinguished Name or a DN.
  5. There are quite a few fields but you can leave some blank
  6. For some fields there will be a default value,
  7. If you enter '.', the field will be left blank.
  8. -----
  9. Country Name (2 letter code) [XX]:CN #国家
  10. State or Province Name (full name) []:BJ #省份
  11. Locality Name (eg, city) [Default City]:BJ #城市
  12. Organization Name (eg, company) [Default Company Ltd]:
  13. Organizational Unit Name (eg, section) []:test #部门
  14. Common Name (eg, your name or your server's hostname) []:test #主机名
  15. Email Address []:test@test.com #邮箱
  16.  
  17. Please enter the following 'extra' attributes
  18. to be sent with your certificate request
  19. A challenge password []:wuminyan #密码
  20. An optional company name []:wuminyan #姓名
  21. [root@ns3 zhengshu]# ls
  22. local.csr local.key
  1. req: 这是一个大命令,提供生成证书请求文件,验证证书,和创建根CA
  2. -new: 表示新生成一个证书请求
  3. -x509: 直接输出证书
  4. -key: 生成证书请求时用到的私钥文件
  5. -out:输出文件

3、生成CA根证书

  1. 这个生成CA证书的命令会让人迷惑
  2. 1.通过秘钥 生成证书请求文件
  3. 2.通过证书请求文件 生成最终的证书
  4. -in 使用证书请求文件生成证书,-signkey 指定私钥,这是一个还没搞懂的参数
  5. [root@ns3 zhengshu]# openssl x509 -req -in local.csr -extensions v3_ca -signkey local.key -out local.crt
  6. Signature ok
  7. subject=/C=CN/ST=BJ/L=BJ/O=Default Company Ltd/OU=test/CN=test/emailAddress=test@test.com
  8. Getting Private key

三、根据CA证书创建server端证书

1、生成server私匙

  1. [root@ns3 zhengshu]# openssl genrsa -out my_server.key 2048
  2. Generating RSA private key, 2048 bit long modulus
  3. .................................+++
  4. .........................................+++
  5. e is 65537 (0x10001)
  6. [root@ns3 zhengshu]# ls
  7. local.crt local.csr local.key my_server.key

2、生成server证书请求

  1. [root@ns3 zhengshu]# openssl x509 -req -in local.csr -extensions v3_ca -signkey local.key -out local.crt
  2. Signature ok
  3. subject=/C=CN/ST=BJ/L=BJ/O=Default Company Ltd/OU=test/CN=test/emailAddress=test@test.com
  4. Getting Private key
  5. [root@ns3 zhengshu]# openssl genrsa -out my_server.key 2048
  6. Generating RSA private key, 2048 bit long modulus
  7. .................................+++
  8. .........................................+++
  9. e is 65537 (0x10001)
  10. [root@ns3 zhengshu]# openssl req -new -key my_server.key -out my_server.csr
  11. You are about to be asked to enter information that will be incorporated
  12. into your certificate request.
  13. What you are about to enter is what is called a Distinguished Name or a DN.
  14. There are quite a few fields but you can leave some blank
  15. For some fields there will be a default value,
  16. If you enter '.', the field will be left blank.
  17. -----
  18. Country Name (2 letter code) [XX]:CN
  19. State or Province Name (full name) []:BJ
  20. Locality Name (eg, city) [Default City]:BJ
  21. Organization Name (eg, company) [Default Company Ltd]:
  22. Organizational Unit Name (eg, section) []:test
  23. Common Name (eg, your name or your server's hostname) []:test
  24. Email Address []:test@test.com
  25.  
  26. Please enter the following 'extra' attributes
  27. to be sent with your certificate request
  28. A challenge password []:wuminyan
  29. An optional company name []:wuminyan
  30. [root@ns3 zhengshu]# ls
  31. local.crt local.csr local.key my_server.csr my_server.key

3、生成server证书

  1. [root@ns3 zhengshu]# openssl x509 -days 365 -req -in my_server.csr -extensions v3_req -CAkey local.key -CA local.crt -CAcreateserial -out my_server.crt
  2. Signature ok
  3. subject=/C=CN/ST=BJ/L=BJ/O=Default Company Ltd/OU=test/CN=test/emailAddress=test@test.com
  4. Getting CA Private Key

四、配置nginx支持SSL

  1. [root@ns3 ~]# vim /etc/nginx.cof #这里设置了一个软连接:lln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
  2. server {
  3. listen 80;
  4. listen 443 default ssl; #监听433端口
  5. keepalive_timeout 100; #开启keepalive 激活keepalive长连接,减少客户端请求次数
  6.  
  7. ssl_certificate /root/zhengshu/local.crt; #server端证书位置
  8. ssl_certificate_key /root/zhengshu/local.key; #server端私钥位置
  9.  
  10. ssl_session_cache shared:SSL:10m; #缓存session会话
  11. ssl_session_timeout 10m; # session会话 10分钟过期
  12.  
  13. ssl_ciphers HIGH:!aNULL:!MD5;
  14. ssl_prefer_server_ciphers on;
  15.  
  16. server_name test.com;
  17. charset utf-8;
  18.  
  19. location / {
  20. root html;
  21. index index.html index.htm;
  22. }
  23.  
  24. }
  25. }

五、测试

输入https://192.168.200.115

nginx结合openssl实现https的方法

nginx结合openssl实现https的方法

nginx结合openssl实现https的方法

到此这篇关于nginx结合openssl实现https的文章就介绍到这了,更多相关nginx实现https内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/qiyueqi/p/11551238.html

延伸 · 阅读

精彩推荐
  • NginxNginx location 和 proxy_pass路径配置问题小结

    Nginx location 和 proxy_pass路径配置问题小结

    本文是基于 location 的匹配末尾是否配置 / 和 proxy_pass 末尾是否配置 / ,进行测试,完全还原了整个测试过程,本文给大家介绍Nginx location 基本配置及相关配...

    自由早晚乱余生18742021-09-24
  • Nginxnginx ssl免密码重启教程详解

    nginx ssl免密码重启教程详解

    这篇文章给大家介绍了nginx 如何启动以及nginx ssl 免密码重启 的方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧 ...

    mrr4272019-11-19
  • NginxNginx动静分离实现案例代码解析

    Nginx动静分离实现案例代码解析

    这篇文章主要介绍了Nginx动静分离实现案例代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    盗哥泡茶去了3382020-09-27
  • Nginx利用nginx和腾讯云免费证书制作https的方法

    利用nginx和腾讯云免费证书制作https的方法

    这篇文章主要介绍了利用nginx和腾讯云免费证书制作https的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    dalaoyang5992019-12-30
  • Nginx通过Nginx规则重写URL去掉index.php不显示index.php

    通过Nginx规则重写URL去掉index.php不显示index.php

    Nginx不仅占用内存少,并发能力强,而且拓展功能丰富,可以通过安装模板来强化功能,也能通过规则优化,优化服务器并发处理能力,是建站的不二之选...

    Genius日记5872020-10-16
  • NginxNginx Rewrite使用场景及代码案例详解

    Nginx Rewrite使用场景及代码案例详解

    这篇文章主要介绍了Nginx Rewrite使用场景及代码案例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可...

    盗哥泡茶去了11862020-09-27
  • Nginxnginx rewrite 伪静态配置参数和使用例子

    nginx rewrite 伪静态配置参数和使用例子

    nginx下伪静态配置参数详细说明,使用nginx的朋友,nginx rewrite 伪静态配置参数和使用例子 附正则使用说明 ...

    服务器之家3102019-10-08
  • Nginx如何优化Nginx的处理性能

    如何优化Nginx的处理性能

    Nginx是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性,在连接高并发的情况下,Nginx是Apache服务不错的替代品。其特点是占有内存少,...

    Dockone.io5142020-12-11