内容简介:本博客所有文章采用的授权方式为声明:本博客欢迎转发,但请保留原作者信息!
本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。
声明:
本博客欢迎转发,但请保留原作者信息!
博客地址:孟阿龙的博客Https简介
简单的理解,在http的基础上增加一层 SSL加密的过程,就实现了https。服务端和客户端传输信息的时候都会通过TLS进行加密。基本的原理如下:
- 客户端与服务端建立连接,生成各自的私钥和公钥
- 服务端返回给客户端一个公钥
- 客户端拿着这个公钥把需要传输给服务端的数据进行加密,形成密文,连同自己的公钥一起返回给服务器
- 服务器拿自己的私钥对密文解密之后,将响应数据用客户端的公钥加密,返回到客户端
- 客户端拿着自己的私钥解密,将数据呈现出来
搞清楚上边的原理之后,一个http服务要实现https,最关键的环节就是生成自己的证书+私钥。证书的来源基本有如下几种途径:
- 自己在服务器上生成。如果是自己做测试使用,推荐这种,简单方便
- 在CA证书机构申请免费的证书(目前阿里云、百度云都有提供)。如果服务不是很重要或者主要用来测试,那么也可以用
- 在CA证书机构申请付费证书。商用推荐方案
接下来就以第1中方式来记录一下https的服务配置
自己生成免费证书
我用的是nginx,因此在nginx的conf目录下创建ssl目录,之后进入ssl目录生成证书
-
生成秘钥key
openssl genrsa -des3 -out server.key 2048
过程中需要输入密码,两次输入一致,记住即可,结束之后生成 server.key文件,后续使用该文件生成其他配置的时候都需要输入这里的密码。如果不想后续输入密码,则执行(建议执行,因为如果不做这一步,后续配置了nginx之后,nginx服务启动的时候都需要让你输入密码):
openssl rsa -in server.key -out server.key
-
生成服务器证书的申请文件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 []: 可以不输入,直接回车
- 生成CA证书:
openssl req -new -x509 -key server.key -out ca.crt -days 3650
-
生成一个有效期为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启动的3389端口对应http请求,启动443端口对应https请求。 修改完配置文件重启nginx服务生效即可。 之后就可以通过https://your.domain.name/xxx 来访问你的服务了
注意:
我测试用的是阿里云上的ecs服务器,在阿里云,默认服务器是不开放443端口的,因此需要去你的阿里云对应实例的安全组上,放开 443端口
以上所述就是小编给大家介绍的《Nginx 配置https》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 6、如何获取配置中心的配置
- React降级配置及Ant Design配置
- vscode 配置eslint 开发vue的相关配置
- git commit 规范校验配置和版本发布配置
- hadoop地址配置、内存配置、守护进程设置、环境设置
- 在hibernate中配置事务级别与命名查询配置【原创】
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python编程
[美]埃里克·马瑟斯 / 袁国忠 / 人民邮电出版社 / 2016-7-1 / CNY 89.00
本书是一本针对所有层次的Python 读者而作的Python 入门书。全书分两部分:第一部分介绍用Python 编程所必须了解的基本概念,包括matplotlib、NumPy 和Pygal 等强大的Python 库和工具介绍,以及列表、字典、if 语句、类、文件与异常、代码测试等内容;第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python 2D 游戏开发如何利用数据生成交互式的信息图......一起来看看 《Python编程》 这本书的介绍吧!