如何使内网ip能够实现HTTPS访问

  在公司内部网络研发过程中,是使用的内部服务器进行发布,因此访问的ip也是内部的ip。这时候如果想对应用采用https访问的话,就需要配置对应的证书,但是市面上的证书需要使用到域名,并且基本都是基于互联网进行的认证,这种场景,在实际内网环境下,就变得难受,既不方便切换https后的调试,也不方便验证是否https配置都能成功,基于上述的情况,想到在内部服务器上生成证书,并且证书的认证地址也指向到ip,经过查找相关资料,遇到同样问题的还不少,现给出经过实际验证可行的方法。

  1.mkcert

  mkcert是一个使用go语言编写的生成本地自签证书的小程序,具有跨平台,使用简单,支持多域名,自动信任CA等一系列方便的特性可供本地开发时快速创建https环境使用,其最新版本地址如下:https://github.com/FiloSottile/mkcert/releases/latest

  根据内部服务器的操作系统类型下载对应的windows/Linux/arm版本即可,在本例中采用linux进行介绍。

  首先从上述网址下,下载mkcert-v1.4.4-linux-amd64,然后上传到服务器并为其赋予权限

  chmod +x mkcert-v1.4.4-linux-amd64

  然后将mkcert文件移动到bin目录下

  sudo cp mkcert-v1.4.4-linux-amd64 /usr/local/bin/mkcert

  安装证书

  mkcert -install

  将生成的证书下载到需要访问该ip的pc机上备用

  执行mkcert -CAROOT,得到证书的根目录,然后将该目录下的rootCA.pem文件下载

  将可信ip写入,并生成对应的ssl证书,执行中可能会要求输入密码,需要记住该密码,后续配置https时会用到

  mkcert localhost 127.0.0.1 ::1 192.168.1.99

  好,执行到这里,我们需要的证书文件就准备妥了,下一步是配置对应的中间件所需要ssl证书文件。

  2.tomcat

  tomcat部署https服务需要jks文件,因此需要将生成的文件转换成jks文件,执行中可能会要求输入密码,需要记住该密码

  openssl pkcs12 -export -inkey ./localhost+3-key.pem -in ./localhost+3.pem -name localhost+3 -out localhost+3.p12

  keytool -importkeystore -srckeystore localhost+3.p12 -srcstoretype pkcs12 -destkeystore localhost+3.jks

  将jks文件复制到tomcat的conf目录下

  cp localhost+3.jks /apache/conf/

  修改tomcat的server.xml文件配置,在默认端口下增加https访问的配置

  

 

 

   

<Connector port="8888" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false"
<!--jks文件路径-->
keystoreFile="/projectTest/apache-tomcat-9.0.21/conf/localhost+3.jks"
<!--jks文件密码-->
keystorePass="jjjc2022" 
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"
/>

 

  重启服务即可。

  3.nginx

  nginx部署需要crt和key文件,因此也需要通过mkcert生成的文件来进行转换

  openssl x509 -in localhost+3.pem -out localhost+3.crt

  openssl rsa -in localhost+3-key.pem -out localhost+3.key 

  将生成的这两个文件,复制到nginx的conf目录下,并配置nginx.conf

  

 

   重启nginx服务即可。

  4.配置客户端访问pc

  根据客户端pc的版本下载对应的mkcert文件,本例中采用windows的

  将windows版的mkcert文件与从服务器下载rootCA.pem文件放在一起,然后新建一个bat文件,填入以下内容

  

@echo off
set p=%~dp0
SETX CAROOT %p% && mkcert-V1.4.4-windows-amd64.exe -install
pause

 

  以管理员身份运行。

  5.验证https访问

  

 

   在访问之前,最好使用无痕模式访问

 

  

posted @ 2022-10-20 11:34  花&JO  阅读(6718)  评论(0编辑  收藏  举报