服务器协议失败,Chrome中的HTTPS服务器“不支持的协议错误”
我正在用Java制作一个自定义的HTTP/1.1服务器实现。它在HTTP模式下工作正常,但我也想支持HTTPS。我还没有为服务器生成证书,但它至少应该尝试连接。我将协议和密码套件设置为与google.com(TLS 1.2,ECDHE_RSA,AES_128_GCM)相同的设置,因此我知道Chrome支持它们。Chrome中的HTTPS服务器“不支持的协议错误”
但是,当我尝试在Chrome中连接到https://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
谢谢,使用“密码”工作。但是不确定为什么。 –
服务器协议失败,Chrome中的HTTPS服务器“不支持的协议错误”相关推荐
- 非零基础自学Golang 第18章 HTTP编程(下) 18.2 HTTP服务端 18.2.2 启动HTTP服务器 18.2.3 启动HTTPS服务器
非零基础自学Golang 文章目录 非零基础自学Golang 第18章 HTTP编程(下) 18.2 HTTP服务端 18.2.2 启动HTTP服务器 18.2.3 启动HTTPS服务器 第18章 H ...
- 修改AD服务器时间,AD中权威时间服务器的配置
在以往的工作当中,我们DC服务器WIN32TIME经常报错,找不到时间服务器,不能同步.为了消除这个烦人的错误,我这样处理之后,在没出现过报错. 1 内部时间服务器实现与外部时间服务器的同步 a. 单 ...
- 网络位置添加一个ftp服务器,win7网络中添加ftp服务器
win7网络中添加ftp服务器 内容精选 换一换 支持.SFS容量型文件系统:支持为SFS容量型文件系统配置多个VPC,以使归属于不同VPC的云服务器,只要所属的VPC被添加到文件系统的VPC列表下, ...
- 抖音服务器升级维护中,抖音服务器维护中是什么意思
抖音服务器维护中是什么意思?今天,根据很多网友的反映,很多用户在使用抖音App的时候发现手机上会出现"抖音服务器"正在维护中的字样.这是怎么回事呢?抖音发生这样的原因是什么呢?今天 ...
- ftp服务器账号,Serv-U中的FTP服务器账号管理
前面我们已经介绍了有关于Serv-U中的FTP服务器设定过程.那么接下来我们在对它的账号的相关内容进行一下解析.首先了解一下这个软件的用户账号管理功能. 用户帐号管理 用户使用FTP服务器的一个最基本 ...
- 怎么制作web服务器iis,IIS中搭建web服务器
IIS中搭建web服务器 前面的博文中和大家聊了如何在Windows Server 2012 R2的环境下搭建IIS服务器,今天我们就继续和大家聊聊如何在我们的IIS服务器中搭建一个WEB服务器,从而 ...
- activex control test container 服务器正在运行中_Desktop Central服务器RCE漏洞在野攻击分析...
0x01 漏洞披露 在研究Desktop Central漏洞的过程中,我们在推特上找到了一位研究人员的帖子,该研究人员于2020年3月5日披露了Desktop Central的RCE漏洞. Zoho ...
- windows修改时间服务器,在Windows中设置时间服务器 2012 R2
大家都知道, 时的服务是任何网络中最重要的组成部分, 任何系统, 在所有计算机上同步时钟是我们可以做的事情工作,也都成功同步的内部系统最少. 通常情况下,我们有一个网络时间服务器以从外部时钟获得的时间 ...
- 嵌入式转linux服务器,嵌入式Linux中的Web服务器应用
Boa是一个非常小巧的Web服务器,其可执行代码只有60K左右.它是一个单任务的Web服务器,只能依次完成用户的请求,而不会fork出新的进程处理并发连接请求.但boa支持cgi,能够为cgi程序fo ...
- 服务器运行过程中跳线,服务器内部跳线地址原理
弹性云服务器 ECS 弹性云服务器(Elastic Cloud Server)是一种可随时自助获取.可弹性伸缩的云服务器,帮助用户打造可靠.安全.灵活.高效的应用环境,确保服务持久稳定运行,提升运维效 ...
最新文章
- 前端笔记----定位
- GIOU loss+DIOU loss+CIOU loss
- 漫步数理统计二十八——混合分布
- Java基础知识之变量与常量、数据类型、类型转换
- 现代电子计算机诞生理论基础是什么,《计算机应用基础》习题集2
- Yii2学习笔记(一):Yii的安装和使用(base版)
- 在国外用什么app软件听歌 解除网易云音乐地区限制
- 如何免费批量将caj转换成PDF
- WPS(Word)中图注、域的使用基础
- Github 单文件快速下载 -- 使用 DownGit
- OneNET EDP协议讲解与应用
- mysql数据库实验+cmd界面运行基本操作总结(sql:数据增删改查,表格,视图,备份恢复)
- anaconda 代码提示,Anaconda安装OpenCV没有自动代码补全
- python图像处理:全景图片转鱼眼图片(鱼眼矫正)
- url地址的图片路径
- 584分学计算机报什么大学,2021年高考584分左右能上什么大学(100所)
- UFS系列7:描述符、标识和属性
- 可以播放音频的c语言程序,用C语言怎么实现播放音乐?
- Python计算矩阵相乘
- Oracle数据库描述错误的,下列有关数据库的描述 错误的是