Openssl自签证书|Nginx配置全站HTTPS,包括WSS(websocket)
一.生成自签证书
如果有购买证书的,可忽略此步骤。
生成方法一:
openssl genrsa -des3 -out ca.key 1024
openssl rsa -in ca.key -out ca.key.nopass
openssl req -new -key ca.key.nopass -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey ca.key.nopass -out server.crt
生成方法二:
- 建立CA密钥
创建密钥
openssl genrsa -des3 -out ca.key 1024
2.利用CA密钥自签署CA证书
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
3.生成(eg服务器端的)私钥(key文件)
openssl genrsa -des3 -out server.key 1024
4.用server.key生成一个证书
openssl req -new -key server.key -out server.csr
5.用CA的证书为生成的server.csr文件签名
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
6.证书撤销
不需要吊销证书的,可不必执行此步骤。
openssl ca -keyfile ca.key -cert ca.crt -revoke server.crt
这时数据库被更新证书被标记上撤销的标志,需要生成新的证书撤销列表:
openssl ca -gencrl -keyfile ca.key -cert ca.crt -out test.crl
查看证书撤销列表:
openssl crl -noout -text -in crl/test.crl
二.配置HTTPS
/mnt/cert/xxx 为证书 存放路径,自行更正。
listen 80;
listen 443 ssl;
ssl_certificate /mnt/cert/xxx/server.crt;#你的证书位置
ssl_certificate_key /mnt/cert/xxx/ca.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
三.强制http跳转https
强制http请求跳转到https上,可以配置两个server,然后进行301跳转。这里通过判断域名的方式,更直接简单。
if ($scheme = 'http') {
return 301 https://$host$request_uri;
}
四.配置wss(websocket)
给websocket长连接请求增加上tls保护,使其原本的ws变成wss。
这里和http请求配置tls基本一致,需要在其基础上增加http协议头参数,如下:
location /wsapp/ {
proxy_pass http://wsbackend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
如果不增加如上参数,反向代理时原本的websocket请求就当做http请求反馈给后端,导致无法定位到具体资源。从而致使前端收到响应404.
Openssl自签证书|Nginx配置全站HTTPS,包括WSS(websocket)的更多相关文章
- Ubuntu + Nginx 配置全站https访问
最近跟室友要一起搞一个个人公众号,提前想把生态想清楚了,所以准备部署一个网站 正好公司有Microsoft Visual Studio Professional订阅,每个月有50刀免费额度,对于Azu ...
- Nginx配置支持https协议-应用实践
Nginx配置支持https协议-应用实践 https简介 HTTPS 是运行在 TLS/SSL 之上的 HTTP,与普通的 HTTP 相比,在数据传输的安全性上有很大的提升. TLS是传输层安全协议 ...
- 使用OpenSSL自建CA + Nginx配置HTTPS
Ubuntu 16.04(ECS),OpenSSL 1.0.2g 1 Mar 2016,Nginx 1.10.3 (Ubuntu), 浏览器:Chrome 67,Firefox 61,Edge 40 ...
- nginx配置访问https[自签版]
通过openssl生成证书 (1)设置server.key,这里需要设置两遍密码: openssl genrsa -des3 -out server.key 1024 (2)参数设置,首先这里需要输入 ...
- Ubuntu 18.04使用OpenSSL自签证书(证书支持多IP及多域名,谷歌浏览器无警告)
前言 在HTTPS数据传输的过程中,需要用SSL/TLS对数据进行加密和解密,以保证网络传输过程中数据的机密性.HTTPS协议可以大致分为两个部分:其一是协商密钥,首先当Client向Web Serv ...
- centos 6.9 +nginx 配置GIT HTTPS服务器(证书采用自签名)
第一部分原通过SSH访问的GIT服务器迁移 1.把原服务器GIT资源库目录完成复制至新的服务器 2.安装GIT服务器 新的服务器 创建用户 useradd git password git 下载GIT ...
- nginx配置本地https
客户端如何验证服务器的证书呢?服务器自己的证书必须经过某"权威"证书的签名,而这个"权威"证书又可能经过更权威的证书签名,这么一级一级追溯上去,最顶层那个最权威 ...
- NGINX 配置本地HTTPS(双向认证)
一.SSL协议加密方式 SSL协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL首先对对称加密的密钥使用公钥进行非对称加密,链路建立好之后,SSL对传输内容使用对称加密. 1 ...
- nginx 配置全站404(百度闭站保护)
在百度站长里申请闭站保护时,需要全站404.可能过nginx配置实现 location / { #root html; #index index.html index.htm; retur ...
- Nginx 实现全站 HTTPS(基于 Let's Encrypt 的免费通配符证书)
单域名证书的生成可以 参考这里. acme.sh 项目中文文档 Let's Encrypt 在 18 年 1 月份推出了 ACME v2,支持通配符域名证书,对小网站.个人站长的友好度进一步增加. 常 ...
随机推荐
- sqlalchemy 数据类型
- 微信小程序学习记录
尺寸单位 rpx 常常以iphone6为开发基准, 1px = 2rpx,不同设备的比例是不同的: 小程序生命周期 和vue的生命周期很相似,不过小程序的生命周期和页面.组件的生命周期又又一点不一样 ...
- 32.自定义Java异常捕获处理类及其使用
自定义异常捕获处理类 /** * <h1>异常捕捉</h1> * */ public class ExceptionHandler implements Thread.Unca ...
- Two-Stream Consensus Network for Weakly-Supervised Temporal Action Localization概述
1.针对的问题 在没有帧级注释的情况下,W-TAL方法很难识别假阳性的动作建议,并生成具有精确时间边界的动作建议.具体来说,之前的W-TAL方法所面临的最关键的问题之一是缺乏排除假阳性动作建议的能力. ...
- Maxim遍历测试工具(monkey升级版)
Maxim 对应GitHub地址:https://github.com/zhangzhao4444/Maxim,其是对Android monkey的改进工具.是基于遍历规则和高性能要求. 条件准备: ...
- mariadb数据库查询(select)
查询基本使用(条件,排序,聚合函数,分组,分页) 示例:--创建学生表 create table students ( id int unsigned not null auto_increment ...
- vue页面多表单验证保存
页面中有多个表单需要验证,可以使用以下方法: export default { data: { return { addOrEditVo: { name: '', description: '', a ...
- [BOM]判断是否为pc页面、是否为ios页面
常用于pc页面与h5页面的跳转和适配,区分不同设备进行下载跳转区分. var is_pc = !(navigator.userAgent.match(/(phone|pad|pod|iPhone|iP ...
- 2022-04-19内部群每日三题-清辉PMP
1.一个项目的完工预算(BAC)为100,000美元.目前的项目报告显示该项目符合进度和预算.一位团队成员对相关工作包进行自下而上估算,表明剩余工作将比原计划少用10,000美元,并且仍能按进度计划交 ...
- Thread 的run方法和start方法的区别
start()方法是用来启动线程,实现了多线程运行 点进去查看源码,发现start方法创建一个线程 并让线程处于就绪状态,并且在start方法内会调用start0()方法,而start0作为本地方法 ...