局域网内搭建安全的HTTPS协议环境,分别给IIS和tomcat使用,并解决SSLHandshakeException异常

局域网搭建安全的https协议


前言

在局域网中总有项目需要从http切换到安全的https协议。并且要求其他电脑访问服务器的时候也是安全的https协议,两个办法,要不花钱买证书,要不学习下这篇文章。


提示:以下是本篇文章正文内容,下面案例可供参考

一、OpenSSL工具的安装和使用

提示:OpemSSL用来生成服务器要适用的证书

1.OpenSSL下载
1.1双击压缩包中的exe,进行安装

除了截图中的提示,其他的只需下一步即可。
请添加图片描述
在这里插入图片描述

在这里插入图片描述

1.2OpenSSL的打开,点击红框即可打开

在这里插入图片描述

二、使用OpenSSL生成服务器证书和根证书并导入到访问端电脑的证书中

1.OpenSSL 创建根 CA 证书
1.1创建 CA证书加密密钥
openssl ecparam -out contoso.key -name prime256v1 -genkey

执行完后会在当前用户目录下生成contoso.key
在这里插入图片描述

1.2生成证书签名请求 CSR
openssl req -new -sha256 -key contoso.key -out contoso.csr

按照截图中输入各个信息,后两项为确认密码,导入crt的时候会用
在这里插入图片描述

执行完后会在当前用户目录下生成contoso.csr
在这里插入图片描述

1.3生成根证书
openssl x509 -req -sha256 -days 365 -in contoso.csr -signkey contoso.key -out contoso.crt

执行完后会在当前用户目录下生成contoso.crt
在这里插入图片描述

2.OpenSSL 创建服务器证书
2.1创建服务器证书的加密密钥
openssl ecparam -out fabrikam.key -name prime256v1 -genkey

执行完后会在当前用户目录下生成fabrikam.key
在这里插入图片描述

2.2创建服务器证书的 CSR
openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr

按照截图中输入各个信息,后两项为确认密码,导入crt的时候会用,执行完后会在当前用户目录下生成fabrikam.csr
在这里插入图片描述

2.3创建服务器证书的 crt

将压缩包中的http.ext黏贴到当前用户目录下,并且修改IP.1为服务器的ip,这个ip也是未来局域网中其他电脑要访问的ip
在这里插入图片描述

openssl x509 -req -in fabrikam.csr -CA  contoso.crt -CAkey contoso.key -CAcreateserial -out fabrikam.crt -days 365 -sha256 -extfile http.ext

执行完后会在当前用户目录下生成fabrikam.crt
在这里插入图片描述

3.OpenSSL 创建pfx服务器证书
3.1使用服务器的crt和服务器证书的加密密钥生成服务器pfx证书
openssl pkcs12 -export -out fabrikam.pfx -inkey fabrikam.key -in fabrikam.crt

执行完后会在当前用户目录下生成fabrikam.pfx
在这里插入图片描述

3.2将服务器证书和根证书导入到电脑的证书中

只有将两个证书导入到局域网其他电脑上的个人证书和受信任的根证书颁发机构后,访问的https就是安全的了。
请添加图片描述

  1. WIN+R 弹出运行框,输入如下命令,打开控制台
certmgr.msc

在这里插入图片描述

  1. 将之前的服务器pfx证书导入到个人下面

请添加图片描述
请添加图片描述

  1. 设置服务器证书属性
    请添加图片描述
    请添加图片描述

  2. 将之前的根证书导入到个人下面,并设置属性,目的是为了和CA证书做区分
    请添加图片描述
    在这里插入图片描述

  3. 将导入的两个证书复制到受信任的根证书颁发机构
    请添加图片描述

三、生成的服务器pfx证书用来给IIS服务器用

提示:tomcat服务器不用看这章,请转至第四章

1.在运行页面输入如下命令,打开计算机管理
compmgmt.msc

请添加图片描述

2.打开IIS服务器,并添加网站

请添加图片描述

3.添加项目路径,选择pfx证书(只能通过3.2章节的证书属性名称来选择)点击确定后在防火墙设置服务器对应端口的入栈规则应该就可以访问了。

请添加图片描述

4.若出现这个提示,将端口改为其他的。若端口为443,访问的时候可以不输端口,其他的端口https是需要输入的。

请添加图片描述

四、生成的服务器jks证书用来给tomcat服务器用

1.使用keytool将pfx转换位jks
1.1到用户文件夹下,在路径中输入cmd回车打开命令行窗口

请添加图片描述

1.2令行窗口输入如下命令生成f服务器jks证书
keytool -importkeystore -srckeystore fabrikam.pfx -destkeystore fabrikam.jks -srcstoretype pkcs12 -deststoretype pkcs12

请添加图片描述

2.将jks路径和密码设置到tomcat\conf\server.xml中

keystoreFile为jks证书路径,keystorePass为jks证书人密码,需要改成自己的密码。

    <Connector port="8443" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
			   SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
			   relaxedPathChars='":{}' relaxedQueryChars='\":{}'
			   keystoreFile="D:\fabrikam.jks" keystorePass="000000"
			   />
3.启动服务器,确保第二章服务器证书和根证书都导入到了客户端电脑的证书中,在防火墙设置服务器对应端口的入站规则便可以安全的访问。
4.若客户端访问服务端的时候,后台tomcat报SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target错误。
4.1在客户端浏览器访问服务端,按F12到浏览器开发者模式按照红框中的步骤下载cer证书

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述

4.2将下载好的cer证书导入到服务端
  1. 将cer证书复制到服务器电脑
  2. 到服务器电脑Java\jdk1.8.0_151\jre\lib\security路径下输入cmd打开命令行,输入如下命令
keytool -import -keystore "C:\Program Files\Java\jdk1.8.0_151\jre\lib\security\cacerts" -file C:\Users\test\Desktop\web.cer -alias tomcat

将C:\Program Files\Java\jdk1.8.0_151\jre\lib\security\cacerts替换为自己服务器上的路径
将C:\Users\test\Desktop\web.cer替换为自己服务器上的cer路径和文件名称

  1. 密钥口令为changeit
    请添加图片描述
  2. 输入Y即可
    请添加图片描述
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
引用:HTTP Status 500 - javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find ... 引用:Java Spring应用发送数据报如下问题。 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 原因分析: 引用:用httpclient访问https资源时,会出现异常,与环境也有关系,有些机器请求正常。 解决方案: 在HTTPS通信中,当Java程序尝试与服务端建立安全连接时,会进行SSL握手过程。如果在握手过程中出现异常javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException,可能是由于证书验证失败导致的。这种异常通常有两种原因:一是服务端证书不被信任,二是客户端无法找到合适的证书链。 解决这个问题的方法有以下几种: 1. 信任自签名证书:可以通过自定义TrustManager来信任自签名的证书。但这种方法存在安全风险,因为所有的自签名证书都会被信任。 2. 导入服务端证书:可以将服务端的证书导入到Java的信任证书库中,以确保它被信任。可以使用keytool工具将证书导入到Java信任库中。 3. 禁用证书验证:在开发环境中,可以禁用证书验证来避免这个问题。但在生产环境中不建议这样做,因为会降低通信的安全性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值