如何将Notification和Websocket的https、http为?

摘要:@(前言) 本次遇到的坑是在一个需求中的坑。 如果是自己在内网使用却因为有些功能必须需要https连接的话,可以通过以下两种方式给自己的ip加上个https 先讲一下问题背景吧: 首先本项目的一个请求是属于http,且部署是直接部署到公司内
@ 目录一、http转为https请求(1)生成证书1(crt证书转tomcat使用的jks)(2)配置证书1 (tomcat/conf/server.xml)(3)生成证书2 (tomcat自生成keystore证书库)(4)配置证书2 (tomcat/conf/server.xml)二、Websocket改为https连接后言 本次遇到的坑是在一个需求中的坑。 如果是自己在内网使用却因为有些功能必须需要https连接的话,可以通过以下两种方式给自己的ip加上个https 先讲一下问题背景吧: 首先本项目的一个请求是属于http,且部署是直接部署到公司内网中的项目(所以用ip+端口访问)。 本项目的需求坑为:使用websocket与后台建立长链接,定时接收后台消息,并使用Notification消息提示。 Notification: 使用Notification的时候在本地使用是没有任何毛病的,直到...部署到公司服务器(Centos7)上,就发现原本的Notification的消息提示没有了!!经过查找,才发现原来Chrome发布了新版本62,Notification API不再支持http,所以接下来就得把原本部署在tomcat上的服务请求给换成https请求。 换成https请求: 在切换的时候呢,发现很多博客的提议都是安装ngnix,要不就是购买域名下载证书..... 但是呢,一个身为内网中的项目需要个啥域名哦。所以就得自己生成一个证书,凑合着用就行了(生成证书的方式有很多种,这我会提供两种方式) Websocket: 在把因为Notification而导致使用https之后的项目中,又出现了某个新问题...,就是Websocket又不能使用了,所以需要也需要找对应的解决方案。 一、http转为https请求 先说明证书的类别,不过我本次只会部署在tomcat上所以就需要jks的一个类型。 (1)生成证书1(crt证书转tomcat使用的jks) 第一步:生成一个带密码的私钥 :server.pass.key(需要输入一个4位以上的密码) # genra 生成RSA私钥 # -des3 des3算法 # -out server.key (server.key 为生成的私钥文件名) # 2048 私钥长度 openssl genrsa -des3 -out server.pass.key 2048 第二步:生成一个不带密码的私钥: server.key openssl rsa -in server.pass.key -out server.key 第三步:生成一个证书签名请求: server.csr # req 生成证书签名请求 # -new 新生成 # -key 私钥文件 # -out 生成的CSR文件 # -subj 生成CSR证书的参数 openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Guangdong/L=Guangzhou/O=xdevops/OU=xdevops/CN=gitlab.xdevops.cn" 有需求改,没需求可以不改 第四步:生成自签名SSL证书:server.crt # -days 证书有效期 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt X.509证书包含三个文件:key,csr,crt。 key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密 csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名 crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持> 有人的公钥,以及签署者的签名等信息 备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验> 证算法等。
阅读全文