Nginx 配置https

栏目: 服务器 · Nginx · 发布时间: 6年前

内容简介:本博客所有文章采用的授权方式为声明:本博客欢迎转发,但请保留原作者信息!

本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。

声明:

本博客欢迎转发,但请保留原作者信息!

博客地址:孟阿龙的博客

Https简介

简单的理解,在http的基础上增加一层 SSL加密的过程,就实现了https。服务端和客户端传输信息的时候都会通过TLS进行加密。基本的原理如下:

  1. 客户端与服务端建立连接,生成各自的私钥和公钥
  2. 服务端返回给客户端一个公钥
  3. 客户端拿着这个公钥把需要传输给服务端的数据进行加密,形成密文,连同自己的公钥一起返回给服务器
  4. 服务器拿自己的私钥对密文解密之后,将响应数据用客户端的公钥加密,返回到客户端
  5. 客户端拿着自己的私钥解密,将数据呈现出来

搞清楚上边的原理之后,一个http服务要实现https,最关键的环节就是生成自己的证书+私钥。证书的来源基本有如下几种途径:

  1. 自己在服务器上生成。如果是自己做测试使用,推荐这种,简单方便
  2. 在CA证书机构申请免费的证书(目前阿里云、百度云都有提供)。如果服务不是很重要或者主要用来测试,那么也可以用
  3. 在CA证书机构申请付费证书。商用推荐方案

接下来就以第1中方式来记录一下https的服务配置

自己生成免费证书

我用的是nginx,因此在nginx的conf目录下创建ssl目录,之后进入ssl目录生成证书

  1. 生成秘钥key

    openssl genrsa -des3 -out server.key 2048

    过程中需要输入密码,两次输入一致,记住即可,结束之后生成 server.key文件,后续使用该文件生成其他配置的时候都需要输入这里的密码。如果不想后续输入密码,则执行(建议执行,因为如果不做这一步,后续配置了nginx之后,nginx服务启动的时候都需要让你输入密码):

    openssl rsa -in server.key -out server.key
  2. 生成服务器证书的申请文件server.csr

    openssl req -new -key server.key -out server.csr

    输出的内容如下:

    Enter pass phrase for root.key:  输入前面创建的密码 
    Country Name (2 letter code) [AU]:CN  国家代号,中国CN 
    State or Province Name (full name) [Some-State]:shannxi 省的全名 
    Locality Name (eg, city) []:xi'an 市的全名,拼音 
    Organization Name (eg, company) [Internet Widgits Pty Ltd]: xxxx 公司名称 
    Organizational Unit Name (eg, section) []: 可以不输入,直接回车
    Common Name (eg, YOUR name) []: 可以不输入,也可以输入你的域名
    Email Address []:admin@mycompany.com 邮箱地址
    Please enter the following ‘extra’ attributes 
    to be sent with your certificate request 
    A challenge password []: 可以不输入,直接回车
    An optional company name []: 可以不输入,直接回车
  3. 生成CA证书:
    openssl req -new -x509 -key server.key -out ca.crt -days 3650
  4. 生成一个有效期为10年的服务器证书,server.crt

    openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

    完成后,在ssl目录下生成的server.crt和server.key就是我们nginx需要的证书

配置Nginx(1)

nginx需要支持https,依赖于nginx编译时打开了ssl编译选项。这一步继续配置之前,可以通过命令查看当前nginx是否支持ssl,执行nginx -V 可以查看–with-http_ssl_module 包含了这个选项

./nginx -V
nginx version: nginx/1.12.1
built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
built with OpenSSL 1.0.2g  1 Mar 2016
TLS SNI support enabled
configure arguments: --prefix=/home/work/lnmp/nginx --http-client-body-temp-path=/home/work/lnmp/nginx/tmp/client_body --http-proxy-temp-path=/home/work/lnmp/nginx/tmp/proxy --http-fastcgi-temp-path=/home/work/lnmp/nginx/tmp/fastcgi --http-uwsgi-temp-path=/home/work/lnmp/nginx/tmp/uwsgi --lock-path=/home/work/lnmp/nginx/var/lock/ --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre

配置Nginx(2):

Nginx 配置https

如上图红框中的内容,我当前的nginx启动的3389端口对应http请求,启动443端口对应https请求。 修改完配置文件重启nginx服务生效即可。 之后就可以通过https://your.domain.name/xxx 来访问你的服务了

注意:

我测试用的是阿里云上的ecs服务器,在阿里云,默认服务器是不开放443端口的,因此需要去你的阿里云对应实例的安全组上,放开 443端口 Nginx 配置https


以上所述就是小编给大家介绍的《Nginx 配置https》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python编程

Python编程

[美]埃里克·马瑟斯 / 袁国忠 / 人民邮电出版社 / 2016-7-1 / CNY 89.00

本书是一本针对所有层次的Python 读者而作的Python 入门书。全书分两部分:第一部分介绍用Python 编程所必须了解的基本概念,包括matplotlib、NumPy 和Pygal 等强大的Python 库和工具介绍,以及列表、字典、if 语句、类、文件与异常、代码测试等内容;第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python 2D 游戏开发如何利用数据生成交互式的信息图......一起来看看 《Python编程》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具