SSL
HTTPS
沃信
[图片] 如图 协议是我在腾讯云申请的免费协议 同样在腾讯云申请的没有前面的dl.的协议可以正常使用,这是怎么回事? --- 补充一下,我是用dl.c…
关注者
20
被浏览
368,576
4 个回答
知乎用户
长沙坤奇电子商务有限公司 首席运营总监
你的SSL证书不被当前浏览器支持!
编辑于 2017-11-10 13:32
Gworg
已认证帐号
可以根据SSL证书教程重新配置:SSL证书安装教程_SSL文档_Gworg
常见是因为防火墙没有开通443端口,或者该证书文件错误。
另外查看服务器环境是否版本太低,有的环境无法配置SSL证书或者服务器安全条件不支持TLS1.2导致部分浏览器不能访问。
发布于 2022-08-08 13:56
(为什么?)
[地址访问异常] 此网站无法提供安全连接
是汤圆丫
最近访问一部分网站时,出现如下图所示 “ 此网站无法提供案例连接,客户端和服务器不支持一般 SSL 协议版本或加密套件 ” 的信息提示…
注意这里显示了非常关键的一句话,xxx使用了不受支持的协议。从这句话入手,很快就查到了原因。原来是网站不支持HTTPS协
议, 将HTTPS改为HTTP访问,问题得到解决。
地址
我正在用Java制作一个自定义的HTTP/1.1服务器实现。它在HTTP模式下工作正常,但我也想支持HTTPS。我还没有为服务器生成证书,但它至少应该尝试连接。我将协议和密码套件设置为与google.com(TLS 1.2,ECDHE_RSA,AES_128_GCM)相同的设置,因此我知道Chrome支持它们。Chrome中的HTTPS服务器“不支持的协议错误”
但是,当我尝试在Chrome中连接到//localhost时,它会给出ERR_SSL_VERSION_OR_CIPHER_MISMATCH(本地主机使用不受支持的协议)错误。在Java方面,我得到了“没有共同的密码套件”错误。
Java代码:
public class Server {
private final String dir;
private final ServerSocket server;
private final SSLServerSocket sslServer;
public static String jarDir() {
String uri = ClassLoader.getSystemClassLoader().getResource(".").getPath();
try { return new File(URLDecoder.decode(uri,"UTF-8")).getPath()+File.separator; }
catch (Exception e) { return null; }
}
private static SSLContext createSSLContext(String cert, char[] pass) throws Exception {
/*//Load KeyStore in JKS format:
KeyStore keyStore = KeyStore.getInstance("jks");
keyStore.load(new FileInputStream(cert), pass);
//Create key manager:
KeyManagerFactory kmFactory = KeyManagerFactory.getInstance("SunX509");
kmFactory.init(keyStore, pass); KeyManager[] km = kmFactory.getKeyManagers();
//Create trust manager:
TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509");
tmFactory.init(keyStore); TrustManager[] tm = tmFactory.getTrustManagers();
//Create SSLContext with protocol:
SSLContext ctx = SSLContext.getInstance("TLSv1.2");
ctx.init(km, tm, null); return ctx;*/
SSLContext ctx = SSLContext.getInstance("TLSv1.2");
ctx.init(null, null, null); return ctx;
}
Server(String localPath, int port) throws Exception {
this(localPath, port, 0);
}
//Server is being initialized with:
//new Server("root", 80, 443);
Server(String localPath, int port, int httpsPort) throws Exception {
dir = localPath; File fdir = new File(jarDir(), dir);
if(!fdir.isDirectory()) throw new Exception("No such directory '"+fdir.getAbsolutePath()+"'!");
//Init Server:
server = new ServerSocket(port);
if(httpsPort > 0) {
SSLContext ctx = createSSLContext("cert.jks", "pass".toCharArray());
sslServer = (SSLServerSocket)ctx.getServerSocketFactory().createServerSocket(httpsPort);
//TLS_DH_anon_WITH_AES_128_GCM_SHA256
sslServer.setEnabledCipherSuites(new String[]{"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"});
sslServer.setEnabledProtocols(new String[]{"TLSv1.2"});
//Also does not work, same error:
//sslServer.setEnabledCipherSuites(sslServer.getSupportedCipherSuites());
//sslServer.setEnabledProtocols(sslServer.getSupportedProtocols());
} else sslServer = null;
/*new Thread(() -> { while(true) try {
new HTTPSocket(server.accept(), this);
} catch(Exception e) { Main.err("HTTP Server Error",e); }}).start();*/
if(httpsPort > 0) new Thread(() -> { while(true) try {
new HTTPSocket(sslServer.accept(), this);
} catch(Exception e) { Main.err("HTTPS Server Error",e); }}).start();
}
/* ... Other Stuff ... */
}
编辑:我使用生成一个keytool -genkey -keyalg RSA -alias selfsigned -keystore cert.jks -storepass password -validity 360 -keysize 2048证书,但现在的Java抛出密钥库被篡改,或密码不正确错误。
2017-07-17
Pecacheu
+0
在代码中提供“密码”而不是“密码”作为密码。 –
+0
谢谢,使用“密码”工作。但是不确定为什么。 –