采用的是绿联云 DH2600
1. 在绿联云上安装容器
这里可以开启绿联云的调试功能,进入服务器后台。使用 docker 命令创建容器:
docker run -d \ --name nacos \ --privileged \ --env MODE=standalone \ -p 8848:8848/tcp \ -p 9848:9848/tcp \ --restart=always \ -w /home/nacos \ nacos/nacos-server:v2.1.0
注意:nacos 建议是 2.1.0 版本之前的,后面的版本
docker run -d \ --name elasticsearch \ --restart always \ -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms4096m -Xmx4096m" \ -v /home/harmony/elasticsearch/data:/usr/share/elasticsearch/data \ -v /home/harmony/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ elasticsearch:7.3.1
注意:记得分配一下目录的权限:chmod 777 [ 目录 ]
2. 内网穿透
这里我们选用的是 SakuraFrp
Sakura Frp | 樱花内网穿透 — 免费内网穿透_免费端口映射_高速_高防节点_不限流量_Minecraft我的世界_微信开发调试_群辉NAS_无需公网_免备案
这里以 nacos 容器的内网穿透为例,登入自己的账号配置 SaKuraFrp:
在绿联云 docker 上安装 natfrp 容器
可以直接使用下面的压缩包,导入到绿联云的 docker 里面
查询 NATFRP_TARGET、NATFRP_TOKEN
创建 natftp/frp 容器,将 NATFRP_TARGET、NATFRP_TOKEN 填入即可
启动容器,打开浏览器,连接下面的 IP(例如:nacos 的就是【ip:端口/nacos】)
3. SakuraFrp 子域名绑定配置 SSL 证书
使用这个子域名访问,页面确实不会再出现"红色感叹号"的警告了,但是在 Java 项目中配置 nacos 后,启动确依然会报错:
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
at sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[?:1.8.0_401]
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439) ~[?:1.8.0_401]
… 38 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:148) ~[?:1.8.0_401]
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:129) ~[?:1.8.0_401]
这通常意味着 Java 应用程序无法验证服务器证书的有效性,因为它无法构建一条从根证书到目标证书的有效信任链。所以我们需要使用 keytool 将服务器的根证书或中间证书导入到 Java 的信任库中。
3.1. 导入证书
keytool -import -alias nacos-ssl -file "C:\Users\Harmony\Desktop\u1600292.nyat.app_full.crt" -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit -trustcacerts
注意:
- -alias:证书名称
- -keystore:证书存放位置(可以找一下 jdk 目录下的 cacerts 在什么位置)
- -storepass:密码,(默认都是 changeit)
- -trustcacerts:这个选项告诉 keytool 该命令是在更新信任证书库 (cacerts),而不是普通的密钥库。
3.2. 查看证书
keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
3.3. 删除证书
keytool -delete -alias nacos-ssl -file "C:\Users\Harmony\Desktop\u1600292.nyat.app_full.crt" -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit -trustcacerts
3.4. keytool 相关参数
-certreq 生成证书请求
-changealias 更改条目的别名
-delete 删除条目
-exportcert 导出证书
-genkeypair 生成密钥对
-genseckey 生成密钥
-gencert 根据证书请求生成证书
-importcert 导入证书或证书链
-importpass 导入口令
-importkeystore 从其他密钥库导入一个或所有条目
-keypasswd 更改条目的密钥口令
-list 列出密钥库中的条目
-printcert 打印证书内容
-printcertreq 打印证书请求的内容
-printcrl 打印 CRL 文件的内容
-storepasswd 更改密钥库的存储口令
原文链接:https://blog.csdn.net/weixin_43715214/article/details/143284323?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522851726b1e5c3459da659207462bf9f86%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=851726b1e5c3459da659207462bf9f86&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-18-143284323-null-null.nonecase&utm_term=%E7%BB%BF%E8%81%94nas