1. gateway和应用之间出现问题
图便宜买了两台NAT的服务器,每台服务器只能开放10个端口映射,本来想的是用 Nacos 搭配上 Gateway,这样只需要开放一个gateway的端口就行了,但是万万没想到出现个各种奇怪的问题
- 给应用添加ip和port
spring:
cloud:
nacos:
discovery:
ip: http://example.com
port: 9527
secure: true
- 给gateway添加SSL支持
server:
port: 9999
ssl:
enabled: false
# 项目中的证书文件位置
# key-store: classpath:cert/example.net.jks
# jks 文件路径 用线上的地址也可以
#key-store: https://cdn.example.net/example.net.jks
#key-store: http://upyuncdn.example.net/example.net.jks
key-store-password: password
# 密码
key-store-type: JKS
搞了一天不是这错就是那错的,再加上jar是运行在NAT服务器上的, 各种问题,最后gateway和jar都不使用SSL了,然后gateway部署在正常云服务器上, jar还是在NAT,这样nginx配置location的时候只需要配置一个gateway行了
2. Email发送邮件失败
在windows上开发的好好的,到了ubuntu系统上就出现奇怪的问题了 No appropriate protocol (protocol is disabled or cipher suites are inappropriate
经过一顿查询之后应该是jdk缺少了 TLSV1.2
- 查询JDK安装位置
update-alternatives --list java
- 进入到java目录中修改 java.security
cd /usr/lib/jvm/java-11-openjdk-amd64/conf/security
- 备份 java.security
cp /etc/java-11-openjdk/security/java.security /etc/java-11-openjdk/security/java.security_bak
- 修改
vim java.security
# :737 跳转到737行 或者搜索下边的内容
# /jdk.tls.disabledAlgorithms
# 删除即可
SSLv3, TLSv1, TLSv1.1,
- 验证是否更改成功
# 创建空文件
touch TLSVersionTest。java
# 使用vim或者nano复制进入保存
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import java.io.IOException;
public class TLSVersionTest {
public static void main(String[] args) {
try {
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) factory.createSocket("smtp.qq.com", 465);
String[] supportedProtocols = socket.getSupportedProtocols();
System.out.println("Supported TLS protocols:");
for (String protocol : supportedProtocols) {
System.out.println(protocol);
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
# 编译文件
javac TLSVersionTest.java
java TLSVersionTest
# 查看是否输出 TSLV1.2
- 重启应用