- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我编写了简单的 Java HTTPS 服务器。
创建服务器套接字:
KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(
getCertificateKeyStore().getIterator().toInputStream(),
getCertificateKeyStorePassword().toCharArray()
);
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
keyManagerFactory.init(keyStore, getCertificateKeyPassword().toCharArray());
KeyManager[] km = keyManagerFactory.getKeyManagers();
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("SunX509");
trustManagerFactory.init(keyStore);
TrustManager[] tm = trustManagerFactory.getTrustManagers();
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(km, tm, null);
SSLServerSocketFactory sslServerSocketFactory = sslContext.getServerSocketFactory();
return sslServerSocketFactory.createServerSocket(port);
生成证书:
final SystemConsole systemConsole = new SystemConsole();
systemConsole.writeLine("apt install -y certbot");
systemConsole.writeLine(
"certbot certonly " + (
"--standalone " +
"--non-interactive " +
"--agree-tos " +
"--email " + email + " " +
"--domains " + new JoinStrings(domainNames, ' ')
)
);
System.out.println(systemConsole.read());
final Directory storage = getCommonDataStorage();
final Directory letsEncryptLiveDir = Directory.getExisting("/etc/letsencrypt/live");
final Directory letsEncryptKeysDir = letsEncryptLiveDir.getNotNull(letsEncryptLiveDir.getKeys().getFirst());
storage.removeIfExists("certificate.jks");
systemConsole.writeLine("cd " + letsEncryptKeysDir.absolutePath);
systemConsole.writeLine("openssl pkcs12 -export -out keystore.pkcs12 -in fullchain.pem -inkey privkey.pem -password pass:ilovejava");
System.out.println(systemConsole.read());
systemConsole.write("keytool -importkeystore"); {
systemConsole.write(" -srckeystore keystore.pkcs12");
systemConsole.write(" -srcstoretype PKCS12");
systemConsole.write(" -destkeystore " + storage.absolutePath + "/certificate.jks");
systemConsole.write(" -storepass " + keyStorePassword);
systemConsole.write(" -keypass " + keyPassword);
systemConsole.write(" -srcstorepass ilovejava");
systemConsole.writeLine();
}
System.out.println(systemConsole.read());
systemConsole.writeLine("rm keystore.pkcs12");
return storage.read("certificate.jks");
它在昨天之前一直运行良好。然后它突然停止工作。
在 Chrome 中:ERR_SSL_PROTOCOL_ERROR
在 Firefox 中:SSL_ERROR_RX_RECORD_TOO_LONG
在 Edge 中:奇怪的是仍然有效。
另一个奇怪的事情:Chrome 说我的 SSL 证书实际上没问题:
此外! Chrome 还建立连接、发送请求和接收响应(至少是它的 header ):
看起来它是通过安全套接字连接完成的(因为没有其他连接方式)。握手实际上发生了(正如我在服务器日志中看到的那样)。
但是,我仍然收到与 SSL 相关的错误。我该如何调试到底出了什么问题?
更新:已尝试 openssl s_client -connect <my_domain>:443
.得到这个:
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = stage.bd-polpharma.com.ua
verify return:1
---
Certificate chain
0 s:/CN=stage.bd-polpharma.com.ua
i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFaTCCBFGgAwIBAgISBB3XbH/2SQ6Ai1WXqKyLIDJjMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xOTA0MjUwNzQ3NDlaFw0x
OTA3MjQwNzQ3NDlaMCQxIjAgBgNVBAMTGXN0YWdlLmJkLXBvbHBoYXJtYS5jb20u
dWEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDF0iM/tA0qu644/RUv
m3uGA6RjbPihNnXQW2qy2RAALJhCprXDoVpMGzxIrZs/XvXvcRTa7ps9+zPJCCRN
dUxnydm0rk5H5Orvt2gWMCT/Ln42OyHHjDuYFo3kY9U8xHrkY+x2r4uHBv1GDkQ/
HZrmHRk6fy0yeaMKx6j8y2H8BvG3Hwj7p73sW2umUxnuoP4dbRSTBZqTk6dGNjuN
lWonCFandADcIa2fwzVkBUUDo4NegxB1SuVsu7mGegzmyxCLQhIo8NtSDeCuEN6N
MV8YVenP3CMsHpHAbx1Ly8FbLpmIOUTmDAE4OkNQJTmHEJ2s+ZVT8WNlfhh+rUSf
fUqrAgMBAAGjggJtMIICaTAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFItV0gKguULL
OGG03Q4KJXJnL58uMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMG8G
CCsGAQUFBwEBBGMwYTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50LXgzLmxl
dHNlbmNyeXB0Lm9yZzAvBggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50LXgzLmxl
dHNlbmNyeXB0Lm9yZy8wJAYDVR0RBB0wG4IZc3RhZ2UuYmQtcG9scGhhcm1hLmNv
bS51YTBMBgNVHSAERTBDMAgGBmeBDAECATA3BgsrBgEEAYLfEwEBATAoMCYGCCsG
AQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCCAQMGCisGAQQB1nkC
BAIEgfQEgfEA7wB2AG9Tdqwx8DEZ2JkApFEV/3cVHBHZAsEAKQaNsgiaN9kTAAAB
alOt8a4AAAQDAEcwRQIhAPRmn7ySWOg2bwY90b1q6HxEYyv/APvH2R6a+lwljXJ1
AiAHxeuBUoveypoA5kUueihWe8HjdOuIF0JDbqvCks2itwB1ACk8UZZUyDlluqpQ
/FgH1Ldvv1h6KXLcpMMM9OVFR/R4AAABalOt8OEAAAQDAEYwRAIgT6LbDXae36hY
WFCNA7uybp95ta2ql0iVq0spxttOawECIBbu9Z/oBRAlrGhiMshL9Gqq4ok8OciR
6NmOsH3nXqtlMA0GCSqGSIb3DQEBCwUAA4IBAQAJYXoBWnhdLITZxL0I5s/IrerC
ychitXGqxXY8yJd+HxikJnz+tw6QU+De/aZFdu7/zyZID0X/f59bSE6C2EJZXccP
NQB0Qi7XcMUddMLiHT5vXhQ+KIqctbQyUNokxz8blB6rEi2zDhoHgfvFHQP4ErWG
pJYXLDTMYMT1kdF4ciyiauKLMxPc6i1Mn0Ob0CYLtBl9suLEBrw5RS9ZSlVNXwFN
rl6Vrrvs6H5ntMffBC4zqHELhwTx/uFoh50XzYH7LeLKoGdl5UwRLiPMAJ/zPnDy
BqdhRghbHcTXbbM1qiuO90juZzazUh6rOtK4hDZ97jraacMC1EiaaLdTCYSE
-----END CERTIFICATE-----
subject=/CN=stage.bd-polpharma.com.ua
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3069 bytes and written 302 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: AC9F77EB2B148C44D053707331C431BE1EA40944B6FB2C67FF3B7F4D9B8B00F8
Session-ID-ctx:
Master-Key: AC4B43FE48F138613B55D5E42E39998A5A9500E86B7B154D177D3E98B3DC2A03D5CC344052DE2310B8C1CE91BD487AA5
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1556186839
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: yes
更新:尝试了 getDefaultAlgorithm()、“PKIX”、“TLSv1.2”、“TLSv1.3”以及所有可能的组合。没有帮助。
最佳答案
在尝试了所有可能的事情并询问了每个可能的人 3 天之后,我发现我可以将 Java 版本从 11 降级到 10(OpenJDK 或 Oracle JDK 无关紧要)。它解决了这个问题。
但是,为什么?以及如何在后来的Java上处理它?顺便说一句,Oracle JDK 12 仍然有这个……错误?我不确定如何调用它。不可能是 SSL 在 Java 11+ 中被破坏了。我想,我做错了什么,但我仍然不知道是什么。
关于java - 如何调试 ERR_SSL_PROTOCOL_ERROR/SSL_ERROR_RX_RECORD_TOO_LONG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55846651/
我正在尝试打开我的网站 abc.members.linode.com:80。 但我收到了这个错误:ERR_SSL_PROTOCOL_ERROR我正在使用 linode 并且我有此域的 ssl 证书:
我有一个网站,它是使用 asp.net core 开发的开源网站。并且它已经部署在 Windows Server 2019 和 iis 10 上,我的问题是当从我的国家(约旦)请求网站时它工作得很好,
我在我的网站中包含了一个 JS 库 由网页设计公司设计、维护和托管。我试图实现的目标的实现似乎编码得很好——参见我的 JSFiddle – 它工作正常,没有错误。然而,当从我的 JSfiddle 复
我正在尝试在具有Docker Desktop的Windows 10上的Docker容器中使用apache和php提供hello_world.php文件。 这是Dockerfile: FROM php:
我编写了简单的 Java HTTPS 服务器。 创建服务器套接字: KeyStore keyStore = KeyStore.getInstance("JKS"); keyStore.load(
我已经使用带有 Let's Encrypt 证书的 Traefik 部署了一个网络应用。 启用 SSL 后,网站在我的所有设备上都可以正常运行。 我从我的客户那里收到报告,他们无法从他们公司的契约(C
我开始研究 Node js,我正在尝试将 ionic 应用程序与我创建的后端 nodejs 应用程序连接,但我收到此错误: 选项 https://localhost:3000/insert净::ERR
我已经在我的实时服务器上配置了 Websocket,并且我在实时服务器上使用了 SSL。当我在本地主机上使用以下代码时,websockets 没问题。 ws://localhost:8080/serv
我网站的用户在向 api.flickr.com 发出跨域请求时看到间歇性的 ERR_SSL_PROTOCOL_ERROR 我所说的间歇性是指昨天我在大约 1200 个 API 请求中看到这种情况发
我正在尝试为 Azure 应用服务创建应用程序网关。我相应地配置了一切。我没有使用自定义域。我想配置 azure 应用服务默认域。我在 YouTube 上关注了几个视频: https://www.yo
所以我正在尝试部署我的网站并且基本上尝试过 python manage.py check --deploy 并遵循它告诉我的一切: WARNINGS: ?: (security.W004) You h
我刚刚建立了我的第一个免费 Heroku 站点。它有一个注册和登录系统。我没有域名。当我在未登录 Heroku 的情况下访问该站点时,chrome 向我发送错误 ERR_SSL_PROTOCOL_ER
在 AWS 和 SSL 方面,我处于一个非常新的水平。 我从 GoDaddy 获得了 SSL。之后,我在 AWS 上生成了 .csr 文件,并获得了一个弹性 IP。我在 godaddy sub.myd
我刚刚在本地服务器(Xampp 环境,Windows)上使用 Let's Encrypt SSL 证书(非自签名)创建了一个 PHP Web 服务器,所以我的网站 https://example.it
我有一个 Heroku 应用程序并使用自定义子域指向它。假设我的子域是 blog.mysite.com。 当我导航到该站点时,chrome 抛出错误:ERR_SSL_PROTOCOL_ERROR。在地
我希望有一个我一直忽略的简单解决方案。我用 Python 在 Google Cloud App Engine 上创建了一个应用程序,其中包含一些 REST API。每当我尝试使用 API 时,都会收到
只有部分(不是全部)用户在尝试访问我的快速站点时在 Chrome 中收到 ERR_SSL_PROTOCOL_ERROR。我没有收到这个错误,所以调试起来很痛苦。 我正在使用从提供商 (1&1) 下载的
我在我的 python flask 和 heroku(免费计划)网络应用程序中添加了另外两个页面:http://www.getrandomnumbers.com/ ,但是当我尝试访问我的新页面时(无论
WinServer 2012信息系统 8ASP.NET 4.5 我注意到,在使用 IE11 时,某个特定页面会间歇性地加载失败。它只是说“无法显示此页面”。如果我使用 F12 开发工具,网络跟踪显示带
我需要你的帮助。我尝试使用 uWamp 在本地主机中使用 Drupal 创建一个网站。但是每次我尝试访问我的 site/index.php 或只是 site/时,我都会收到一个错误:ERR_SSL_P
我是一名优秀的程序员,十分优秀!