相关疑难解决方法(0)

如何使用OpenSSL创建自签名证书

我正在为嵌入式Linux设备添加HTTPS支持.我尝试使用以下步骤生成自签名证书:

openssl req -new > cert.csr
openssl rsa -in privkey.pem -out key.pem
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 1001
cat key.pem>>cert.pem
Run Code Online (Sandbox Code Playgroud)

这有效,但我在使用Google Chrome时遇到了一些错误:

这可能不是您要找的网站!
该网站的安全证书不受信任!

我错过了什么吗?这是构建自签名证书的正确方法吗?

ssl openssl certificate ssl-certificate x509certificate

1169
推荐指数
18
解决办法
139万
查看次数

在Android应用程序中使用哪个WebSocket库?

我想在我的Android应用程序中添加一个服务,该应用程序在后台运行,持有WebSocket连接(可能需要几个小时甚至几天),并定期将一些数据发送到服务器.

现在似乎有一堆用于Java的WebSocket库,我不确定应该使用哪一个:

此外,Android …

android websocket node.js

124
推荐指数
1
解决办法
6万
查看次数

哪个Cipher套件启用SSL套接字?

我正在使用Java的SSLSocket来保护客户端和服务器程序之间的通信.服务器程序还提供来自Web浏览器的HTTPS请求.

根据" 使用Java进行初始加密 ",第371页,您应始终呼叫setEnabledCipherSuites您的SSLSocket/ SSLServerSocket以确保最终协商的密码套件足够强大以满足您的需要.

话虽这么说,调用我SSLSocketFactorygetDefaultCipherSuites方法会产生180个选项.这些选项范围从TLS_RSA_WITH_AES_256_CBC_SHA(我认为相当安全)到SSL_RSA_WITH_RC4_128_MD5(不确定这是否安全,给定MD5的当前状态)到SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA(不完全确定它是什么).

什么是限制套接字的密码套件的合理列表?

请注意,客户端和服务器可以访问Bouncy Castle服务提供商,并且他们可能安装或不安装无限制的加密策略文件.

java encryption ssl

21
推荐指数
2
解决办法
5万
查看次数

如何在Android平台上启用SSL调试?

是否有类似于-D javax.net.debug=ssl在Java桌面应用程序的命令行设置,但对于Android?我已尝试在代码中设置它,System.setProperty("javax.net.debug", "ssl");但这不起作用.

如果没有办法启用此属性,是否至少有另一种方法来调试SSL连接的客户端?

编辑:只是为了澄清,这是指原始SSL套接字(SSLSocket和SSLSocketFactory),而不是Apache库或任何其他网络库.

java ssl android

17
推荐指数
1
解决办法
5052
查看次数

在Android 5.0 Lollipop中,HttpClient失败并且Handshake Failed

Android 5.0 Lollipop中的DefaultHttpClient似乎被打破了.它无法设置与先前版本的Android成功设置的某些网站的连接.

例如,我尝试连接到https://uralsg.megafon.ru

//Create httpclient like in https://stackoverflow.com/questions/18523784/ssl-tls-protocols-and-cipher-suites-with-the-androidhttpclient
HttpClient client = new DefaultHttpClient(manager, params);
HttpGet httpGet = new HttpGet("https://uralsg.megafon.ru");
HttpResponse client = httpclient.execute(httpGet);
Run Code Online (Sandbox Code Playgroud)

此代码适用于Android 2.3-4.4,但在Android 5.0(设备和模拟器)上失败,错误连接被对等关闭.当然这是可以理解的,因为Android 5.0尝试将这个旧服务器与TLSv1.2和现代密码连接起来,并且它不支持它们.

好的,使用SSL/TLS协议中的示例代码和带有AndroidHttpClient的密码套件,我们将协议和密码限制为TLSv1SSL_RSA_WITH_RC4_128_MD5.现在它失败了,出现了不同的错误:

javax.net.ssl.SSLHandshakeException: Handshake failed
caused by 
    error:140943FC:SSL routines:SSL3_READ_BYTES:sslv3 alert bad record mac 
    (external/openssl/ssl/s3_pkt.c:1286 0x7f74c1ef16e0:0x00000003) 
    at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake
Run Code Online (Sandbox Code Playgroud)

当然,这段代码在Android 2.3-4.4上运行顺畅.

我用wireshark检查了流量:

302 4002.147873000  192.168.156.30  83.149.32.13    TLSv1   138 Client Hello
303 4002.185362000  83.149.32.13    192.168.156.30  TLSv1   133 Server Hello
304 4002.186700000  83.149.32.13    192.168.156.30  TLSv1   1244    Certificate
305 …
Run Code Online (Sandbox Code Playgroud)

ssl android handshake apache-httpclient-4.x android-5.0-lollipop

15
推荐指数
1
解决办法
2万
查看次数

如何在Spring-boot上启用TLS 1.2?

我试图在Spring-boot 1.2.1上启用Tomcat上的TLS 1.2.由于SSL握手失败,Android 5.0无法连接到默认的SSL设置.Android 4.4,iOS,Firefox和Chrome都连接到默认版本.我认为这是因为Android 5.0支持的TLS协议和spring boot tomcat默认值(TLS v1?)不匹配.

我想我想要更改此application.properties设置:

server.ssl.protocol=TLS
Run Code Online (Sandbox Code Playgroud)

但我没有找到其他可接受的字符串(或者如果有,甚至).通过在spring boot github中搜索"protocol",我找不到枚举.我试过"TLSv1.2",但这似乎没有效果.

application.properties中的当前SSL配置是:

server.ssl.key-store = chainedcertificates.p12
server.ssl.key-store-password = secret
server.ssl.key-store-type = PKCS12
Run Code Online (Sandbox Code Playgroud)

如何在春季启动时启用TLS 1.2?

如果重要,我使用的是Java 1.7.这方面的文档似乎表明它应该支持TLS 1.2.

Tomcat 8似乎有支持.我不知道如何确切地检查春季启动中运行的版本.

ssl tomcat8 spring-boot android-5.0-lollipop

13
推荐指数
2
解决办法
3万
查看次数