前端证书:springboot 项目使用自制的https证书,前端基于node.js的前端证书配置

前言:上一篇解决了后端证书问题,这一偏解决前端配置问题,完美解决谷歌浏览器的疑难杂症(其他浏览器没有问题。。。)如证书无效:

前端证书:springboot 项目使用自制的https证书,前端基于node.js的前端证书配置_第1张图片

一、下载openssl:(window版本)

建议下载1.0.2版本,下载地址: http://slproweb.com/products/Win32OpenSSL.html

二、前期配置:

参考博客:https://blog.csdn.net/youyouyouyou44/article/details/82457461

由于Chrome 58 及以上版本只会使用 subjectAlternativeName 扩展程序(而不是 commonName)来匹配域名和网站证书。如果直接按照下面的步骤生成的ssl证书是不能直接在谷歌正常使用的,会说证书无效,并报错:NET::ERR_CERT_COMMON_NAME_INVALID 。

开始干活:

修改在openssl.cfg(该文件在bin文件中)(其他博客都是openssl.cnf文件,我下载的版本时1.0.2,文件是openssl.cfg)

确保req下存在以下2行(默认第一行是有的,第2行被注释了)
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req

确保req_distinguished_name下没有 0.xxx 的标签,有的话把0.xxx的0. 去掉
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = CN
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = ShangHai
localityName = Locality Name (eg, city)
localityName_default = ShangHai
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Domain Control Validated
commonName = Internet Widgits Ltd
commonName_max = 64

新增最后一行内容 subjectAltName = @alt_names(前2行默认存在)
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

新增 alt_names,注意括号前后的空格,DNS.x 的数量可以自己加
[ alt_names ]
DNS = localhost

IP = 127.0.0.1

针对以上特别说明:

1、如果有绑定了ip的域名,则DNS = 域名;且IP不需要配置;

2、如果只有ip,没有域名,则,一定要配置IP = 你自己前端地址的ip,且,DNS最好配置成localhost,因为测试过配置类似于www.my.com形式的假域名,当你生成证书后,访问系统会报错进不去系统的;

3、当你在生成证书时会填写Common Name,此时,就填写你配置的其中一个DNS,如我填写的是:localhost

接下来还需要准备的是:

CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢.
1、在bin目录下新建目录 demoCA、demoCA下级新建certs、newcerts两个目录
2、在demoCA建立一个空文件 index.txt
3、在demoCA建立一个文本文件 serial, 没有扩展名,内容是一个合法的16进制数字,例如 0000

三、开始制作证书:

1、生成私钥(key文件):

genrsa -out server.key 2048

2、生成csr文件:

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

3、生成ca.key并自签署:

req -new -x509 -days 3650 -keyout ca.key -out ca.crt -config openssl.cfg

4、用生成的CA的证书为刚才生成的server.csr文件签名:

ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -extensions v3_req -config openssl.cfg

5、将server.key转换成server.pem

rsa -in server.key -out server.pem

四、node.js中进行证书配置:

var options = {
      key: fs.readFileSync('./ssl/server.pem'),      //私匙
      cert: fs.readFileSync('./ssl/server.crt'),
      ca: fs.readFileSync('./ssl/ca.crt'),
      auth:"1CUI"
  };
 

五、将ca.crt证书导入到浏览器的“受信任的根证书颁发机构”中即可;

六:最终效果:url栏目中最终是一把的标志,代表你证书生效了,再也不是“不安全”的提示了

你可能感兴趣的:(Java)