自建https证书,唯独在google浏览器中提示“不安全”(nginx+spring boot)

参考链接: 自签发ssl证书 【spring boot】配置ssl证书实现https

一、生成nginx的证书与配置chrome安全告警的问题

  • 1.安装openssl
  • 2.生成根证书
openssl req -x509 -nodes -days 1461 -newkey rsa:2048 -subj "/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization" -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca
  • 3.生成私钥
openssl genrsa -out private.key 2048
  • openssl req -new -key private.key -subj "/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization/CN=123.123.123.123" -sha256 -out private.csr

     

  • .4.生成证书(解决chrome安全告警)。在默认情况下生成的证书一旦选择信任,在 Edge, Firefox 等浏览器都显示为安全,但是Chrome仍然会标记为不安全并警告拦截,这是因为 Chrome 需要证书支持扩展 Subject Alternative Name, 因此生成时需要特别指定 SAN 扩展并添加相关参数。
[ req ]
default_bits        = 2048
distinguished_name  = req_distinguished_name
req_extensions      = san
extensions          = san
[ req_distinguished_name ]
countryName         = CN
stateOrProvinceName = MyProvince
localityName        = MyCity
organizationName    = MyOrganization
[SAN]
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = IP:123.123.123.123

5.将上述内容放到一个文件中,命名为private.ext.执行命令,生成证书

openssl x509 -req -days 1461 -in private.csr -CA CA-certificate.crt -CAkey CA-private.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN
  • nginx中配置如下:
server {
    listen       168.130.1.31:4443;
    server_name  localhost;
    ssl                  on;
    ssl_certificate      /usr/local/nginx/ssl/private.crt;
    ssl_certificate_key  /usr/local/nginx/ssl/private.key;
    error_page 497  https://$host$uri?$args;

     location / {
        root   html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
}

在window或者mac上安装private.crt文件后,nginx上页面或者接口就可以正常访问了。

二、为spring boot应用配置https证书,用上面生成的证书配置spring boot的证书

  • 注意我们是在Java环境中,常用的证书形式有p12格式的,jks格式的,所以需要做转换,以p12为例:
openssl pkcs12 -export -clcerts -in private.crt -inkey private.key -out server.p12

这样生成了spring boot上可以用的私钥格式文件server.p12在这个转换的过程中要求输入一个密码,请记住这个密码

  • 使用keytool查看别名
keytool -list -keystore server.p12

输入密钥库口令:

密钥库类型: JKS
密钥库提供方: SUN

您的密钥库包含 1 个条目

1, 2018-7-17, PrivateKeyEntry,
证书指纹 (SHA1): *********************************
注意这个1这是我们运行这个命令的目的,也就是我们的别名
  • 将server.p12拷贝到resources目录下面,并配置yml如下
server:
    ssl:
      key-store: classpath:server.p12
      key-store-password: 123456
      protocol: TLS
      keyAlias: 1
      keyStoreType: PKCS12

至此我们的nginx和spring boot应用就配置了同一个https证书,只需要在windows或者mac上配置我们的CA-certificate.crt文件就可以成功达到效果了。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值