nginxhttp转https原理(nginx如何将http访问的网站改成https访问)
nginxhttp转https原理
nginx如何将http访问的网站改成https访问目录
- 1. 背景
- 2. 预备知识
- https:
- 证书体系:
- 3. 操作过程
- 3.1 证书生成
- 3.2 nginx配置
- 3.3 浏览器访问
我有个用于数据展示的网站使用nginx对外提供http访问,另外一个系统用超链接的方式跳转到我的网站提供给终端用户访问。后来对方说他们的站点是https访问的,不能直接访问http,所以需要我支持https访问。
所以这里仅限于展示类网站的参考,交互式网站我也不会。
***对nginx的了解仅限于可以通过配置文件完成网站访问的配置,其他没有深入理解。***
2. 预备知识https:
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
简单来讲就是网站中嵌入证书,用户通过浏览器和网站服务器交互时数据会被加密,保证安全。
证书体系:
树状结构,可能有多层证书办法机构,最顶层的叫根证书机构,持有根证书私钥,可以签发下一级证书,每个机构或者人使用的证书由证书颁发机构颁发,简单来讲就是用颁发机构的私钥,对证书人的个人信息、公钥等诸多信息做数字签名,对外宣称这个证书由他证明。证书可以公开访问以验证持有者身份,由颁发机构背书,证书对应私钥由持有人持有,不对外公开,用于解密他人通过证书中公钥加密的私密消息。
有点类似于公安机构对于身份证的颁发,全国总上层有一个公安部,负责所有省级公安厅的管理,省级负责市级,...,最终由派出所给个人颁发身份证,我们拿着身份证就可以对外证明自己的身份,因为有派出所的背书,而派出所又有上级、上上级一直到公安部的背书。不同的是我们的身份证里并没有证书包含的那么多消息。
备注:证书依赖于公钥加密体制,公钥密码体系包含公钥、私钥两把密钥,公钥用户加密、验签,私钥用于解密、签名。
3. 操作过程3.1 证书生成
主要过程是:根证书 -->服务器证书,这里的服务器证书指的是我上面所提到需要添加https访问的网站服务器,
1. 生成根证书私钥、生成根证书请求、创建自签发根证书
#生成根证书私钥 openssl genrsa -out root.key 2048 #生成根证书请求 openssl req -new -key root.key -out root.csr #用根证书私钥自签生成根证书 openssl x509 -req -in root.csr -extensions v3_ca -signkey root.key -out root.crt
这里根证书私钥自签证书的原因是,证书的格式都是一致的,需要有证书颁发签发,因为根证书颁发机构没有上级,所以根证书颁发机构给自己签发证书,因此有需要大家都信任他。
2. 生成服务器证书私钥、生成服务器证书请求、使用根证书私钥签发服务器证书,这里注意此服务器证书的commonName需要设置成nginx配置文件中的server_name,保持一致。
#生成服务器证书私钥 openssl genrsa -out server.key 2048 #生成服务器证书请求 openssl req -new -key server.key -out server.csr #生成服务器证书 openssl x509 -days 365 -req -in server.csr -extensions v3_req -CAkey root.key -CA root.crt -CAcreateserial -out server.crt -extfile openssl.cnf
这里有个openssl.cnf文件需要注意,里面描述了需要颁发的服务器证书的一些信息,内容如下
[req] distinguished_name = req_distinguished_name req_extensions = v3_req [req_distinguished_name] countryName = CN countryName_default = CN stateOrProvinceName = Guizhou stateOrProvinceName_default = Guizhou localityName = Guizhou localityName_default = Guizhou organizationalUnitName = (如果网页访问是ip就写ip,如果是域名就写域名) organizationalUnitName_default = (如果网页访问是ip就写ip,如果是域名就写域名) commonName = (如果网页访问是ip就写ip,如果是域名就写域名) commonName_max = 64 [ v3_req ] # Extensions to add to a certificate request basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
3.2 nginx配置
打开nginx配置中HTTPS server部分的注释,修改server_name、ssl_certificate、ssl_certificate_key、location中的root等字段。
... # HTTPS server # server { listen 443 ssl; server_name xxx.com(网址访问地址); ssl on; ssl_certificate xxx.crt(服务器证书); ssl_certificate_key xxx.key(服务器证书私钥); ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root xxx(前端代码目录); index index.html index.htm; } } ...
启动nginx,即可对外提供服务了。
3.3 浏览器访问
到现在我们已经在服务器端配置了https访问,但是浏览器访问的时候会提示证书错误,因为浏览器现在还不认识我们的证书,不确定它是不是安全的。就像我们都拿着公安部颁发的身份证去证明身份没问题,但是你拿着自己颁发的一个身份证去证明别人就不一定会信了,因为没人知道你的颁发机构是什么情况。
所以我们要把服务器证书的颁发机构,即我们上面生成的根证书添加到浏览器的信任列表中,具体操作方法:如果是windows系统,可以直接双击根证书文件,点击安装,安装到受信任的根证书颁发机构,这时候就可以顺利访问了。
以上就是nginx如何将http访问的网站改成https访问的详细内容,更多关于nginx http访问改成https访问的资料请关注开心学习网其它相关文章!
- nginx集群技巧(Vmware部署Nginx+KeepAlived集群双主架构的问题及解决方法)
- nginx日志配置详细教程(Nginx访问日志及错误日志参数说明)
- nginx日志请求状态(Nginx设置日志打印post请求参数的方法)
- linux nginx搭建(Ubuntu使用nginx搭建webdav文件服务器的详细过程)
- nginx报网络连接错误(Nginx 502 Bad Gateway错误原因及解决方案)
- nginx部署配置详解(Nginx服务器基本的模块配置和使用全攻略)
- nginx怎么支持http转https(Nginx域名转发https访问的实现)
- 新手nginx反向代理问题(详解Nginx proxy_pass的一个/斜杠引发的血案)
- nginx怎么用ssl证书(制作能在nginx和IIS中使用的ssl证书)
- zabbix5.0源码安装(nginx的zabbix 5.0安装部署的方法步骤)
- nginx结构图解(详解Nginx 工作原理)
- nginxrewrite有什么功能(Nginx Rewrite使用场景及代码案例详解)
- nginxmac启动脚本(Mac M1 Nginx 配置多站点的实现)
- nginx 配置解析(Nginx的rewrite模块详解)
- nginx中https配置(Nginx配置同一个域名同时支持http与https两种方式访问实现)
- nginx 根据url限流(浅谈Nginx 中的两种限流方式)
- 自制橡皮泥(自制橡皮泥)
- 还在卖 禁药西布曲明网上论斤卖(还在卖禁药西布曲明网上论斤卖)
- 微商在朋友圈热卖的 DL减肥咖啡 含违禁药物,你还敢买吗(微商在朋友圈热卖的)
- 八一节,说说中国女兵(八一节说说中国女兵)
- 王治郅菜鸟赛季已让八一带入正轨,大郅七大经典语录或是成功秘诀(王治郅菜鸟赛季已让八一带入正轨)
- 庆八一,重读经典红色语录,感悟互联网发展硬道理(重读经典红色语录)
热门推荐
- IT技术类在团队管理上的几个建议
- phpstudy使用教程学习(phpStudy 2016 使用教程详解支持PHP7)
- html5基本代码文字颜色(html5默认气泡修改的代码详解)
- laravel异步日志(laravel异步监控定时调度器实例详解)
- ASP.NET中() => 的含义
- laravel提交数据时间(laravel实现查询最后执行的一条sql语句的方法)
- 程序员哪些情况可以考虑辞职
- css3背景渐变动画效果(css3制作的背景渐变动画效果)
- python pandas dataframe 查询(Python实现从SQL型数据库读写dataframe型数据的方法基于pandas)
- sqlserver完全删除教程(sql server编写archive通用模板脚本实现自动分批删除数据)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9