因此,我有一个简单的GO服务器在端口上运行8080
,使用我使用以下命令创建的自签名证书:
openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out local.crt -keyout local.key\n
Run Code Online (Sandbox Code Playgroud)\n\n创建它时,我将字段设置为以下值:\n
\n如你所见,我跳过了除fully qualified host name
我设置的之外的所有内容go-auth
local.key
我使用和文件成功启动了我的 go 服务器local.crt
。
我尝试像这样卷曲它:
\n\n\xe2\x9e\x9c certs git:(master) \xe2\x9c\x97 curl --proxy-cacert local.crt https://go-auth/\ncurl: (6) Could not resolve host: go-auth\n\n\xe2\x9e\x9c certs git:(master) \xe2\x9c\x97 curl --proxy-cacert local.crt https://localhost:8080/\ncurl: (60) SSL certificate problem: self signed certificate\nMore details here: https://curl.haxx.se/docs/sslcerts.html\n\ncurl failed to verify the legitimacy of the server …
Run Code Online (Sandbox Code Playgroud) 使用以下代码可以使用 ldap3 模块在 Python 3.8.x 中设置连接对象。
tls = Tls(validate=ssl.CERT_NONE, version=ssl.PROTOCOL_TLSv1_2)
server = Server(server_uri, use_ssl=True, tls=tls, get_info=ALL)
conn = Connection(server, user="domain\\myusername", password="password", authentication=NTLM, auto_referrals=False)
conn.bind()
Run Code Online (Sandbox Code Playgroud)
但从 Python 3.10 开始,此代码不再有效 - 执行时会导致 SSL 握手错误。我相信这是因为当前 Python 3.10.x 包中使用的 OpenSSL 库发生了变化。
还有其他人遇到过这个问题并希望找到解决方案吗?
我不是EWS或TLS 1.2的专家.我不确定如何调查这个问题.
基本上,我的客户端应用程序大量使用EWS,其形式是从Exchange服务器提取数据并从Exchange服务器接收订阅主题的通知.
我有一个客户的问题,我正在为我工作.从客户端应用程序到Exchange服务器使用的EWS连接是否支持TLS 1.2?
Exchange服务器可以是2010年和2013年.
我不确定如何确认这一点,或者默认情况下支持此功能.
欢迎提出任何建议或建议.
编辑:
客户端应用程序是用JavaScript编写的.
Exchange服务器的端点是https://outlook.office365.com/EWS/Exchange.asmx
很明显它是https端点.这是否意味着在TLS 1.2合规性下已经运行良好?
我想确保在使用请求库发布到HTTP服务器时,它会拒绝使用TLSv1或TLSv1.1进行通信.为此,我配置了我的https服务器以强制SSL协议使用TLSv1或TLSv1.1.我希望这些版本被拒绝.
我的python程序在CentOs机器上运行:
cat /etc/centos-release
CentOS release 6.7 (Final)
Run Code Online (Sandbox Code Playgroud)
默认的Python版本是2.6.6:
which python
/usr/bin/python
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
Run Code Online (Sandbox Code Playgroud)
我安装了python 2.7:
which python2.7
/usr/local/bin/python2.7
Python 2.7.6 (default, Jun 2 2017, 11:37:31)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux2
>>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 1.0.1e-fips 11 Feb 2013'
openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
Run Code Online (Sandbox Code Playgroud)
使用pip2.7,我安装了所需的库以获取运行请求.我没有对openssl做任何改动.
我发送了两个测试警报,似乎我的程序协商到TLSv1.我的印象是TLSv1已被弃用.该程序使用python 2.7执行,而不是python 2.6的系统默认值.
在我嵌入的python程序的顶部:#!/ usr/local/bin/python2.7
以下是显示TLSv1.1和TLSv1的2个帖子警报:
"POST /testpost HTTP/1.1" 200 43 TLSv1.1/ECDHE-RSA-AES256-SHA "-" "python-requests/2.5.1 CPython/2.6.6 …
Run Code Online (Sandbox Code Playgroud) 我正在使用Golang应用程序和Caddy作为HTTP服务器.golang应用程序拒绝每个http连接,它只能通过HTTPS使用.此应用是一种其他应用消耗的API /服务.因为它需要HTTPS我安装了Caddy所以我可以利用自动SSL证书并使用代理在端口之间切换.
应用程序在端口9000中运行,因此,消费者只会写入mysite.com
并且球童应该负责将请求重定向到端口9000但是维护HTTPS.该网站的球童配置是:
mysite.com {
proxy / :9000 {
max_fails 1
}
log logfile
}
Run Code Online (Sandbox Code Playgroud)
然而,似乎在代理服务器上,HTTPS丢失了.我检查了应用程序的日志(没有球童的日志),我得到了这个:
http: TLS handshake error from xxx.xxx.xxx.xxx:xxxx: tls: oversized record received with length 21536
Run Code Online (Sandbox Code Playgroud)
所以,基于这个错误,对我来说看起来像是由caddy制作的HTTP代理正在丢失HTTPS.我能做什么?
我有一个在Java 6上运行的旧版应用程序。但是,由于某些安全因素,我们需要升级到TLS 1.2。为此,我尝试了以下代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLParameters;
public class TlsCheck {
/**
* test whether this client can connect to TLS v1.2 or not
*/
public static boolean isSuccessfulTLS12connection(){
try{
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, null, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
URL url = new URL("https://tlstest.paypal.com");
HttpsURLConnection httpsConnection = (HttpsURLConnection)url.openConnection();
httpsConnection.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(httpsConnection.getInputStream()));
StringBuilder body = new StringBuilder();
while(reader.ready()){
body.append(reader.readLine());
} …
Run Code Online (Sandbox Code Playgroud) 我正在使用java 7,mule 3.7.0,我已经安装了Java Cryptography Extension
我正在尝试向服务器发送请求,但我收到:
java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:482)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:944)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1342)
Cipher Suites: [TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA]
Compression Methods: { 0 }
Extension elliptic_curves, curve names: {secp256r1, secp384r1, secp521r1}
Extension ec_point_formats, formats: [uncompressed]
Extension extended_master_secret
Extension server_name, server_name: [host_name: merchant.payb.lv]
***
entry.worker.04, WRITE: TLSv1 Handshake, length = 136
entry.worker.04, received …
Run Code Online (Sandbox Code Playgroud) Bitbacket 关闭 TLS v1.0 和 v1.1。我们的 Jenkins 由于旧的 Git 而失败:
git --version
git version 1.8.2.3
+ GIT_CURL_VERBOSE=1
+ git ls-remote https://bitbucket.org/
* Couldn't find host bitbucket.org in the .netrc file, using defaults
* About to connect() to bitbucket.org port 443
* Trying 18.205.93.1... * connected
* Connected to bitbucket.org (18.205.93.1) port 443
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* Unknown SSL protocol error in connection to bitbucket.org:443
Run Code Online (Sandbox Code Playgroud)
我查看了 Git 发行说明:
git clone --depth=1 https://github.com/git/git …
Run Code Online (Sandbox Code Playgroud) 我正在与为我提供证书的银行服务器集成。我pem
用证书创建了一个文件,所以现在我有证书、pem
文件中的私钥和密钥的密码短语。
新生成的文件pem
正在使用 OpenSSL 命令建立 SSL 连接,如下所示:
openssl s_client -connect host:port -key key.pem -cert cert.pem
Run Code Online (Sandbox Code Playgroud)
此命令请求密码短语,我可以连接。但是我无法使用我的 Go 代码连接到相同的内容,如下所示:
package main
import (
"crypto/tls"
"crypto/x509"
"fmt"
"net/http"
)
func main() {
caCert := []byte(`certs pem data`) // this contains both private key and certificates
caCertPool := x509.NewCertPool()
caCertPool.AppendCertsFromPEM(caCert)
// Setup HTTPS client
tlsConfig := &tls.Config{
RootCAs: caCertPool,
InsecureSkipVerify: true,
}
tlsConfig.BuildNameToCertificate()
transport := &http.Transport{TLSClientConfig: tlsConfig}
client := &http.Client{Transport: transport}
httpRequest, _ := http.NewRequest("GET", "https://test.com", nil)
resp, …
Run Code Online (Sandbox Code Playgroud) 我正在使用 OpenSSL-1.1.1-D 验证匿名密码支持,但它因SSL 例程而失败:ssl_cipher_list_to_bytes:no ciphers available:ssl\statem\statem_clnt.c:3798:No ciphersenabled for max allowed SSL/TLS version。
注意:: TLSv1.3 已明确禁用。
请找到S_Server和S_Client结果如下
OpenSSL S_服务器
s_server -no_tls1_3 -cipher ADH-AES128-SHA:ADH-AES128-SHA256:ADH-AES256-SHA256 -state -accept localhost:14000 -nocert -msg
使用默认临时 DH 参数
ACCEPT
SSL_accept:SSL 初始化之前
TLS 1.0,警报 [长度 0002],致命意外消息
SSL3 警报写入:致命:意外消息
SSL_accept:错误中的错误
错误
41244:错误:140940F4:SSL 例程:ssl3_read_bytes:意外消息:ssl \record\rec_layer_s3.c:1477: 关闭 SSL
连接已关闭
OpenSSL S_客户端
s_client -no_tls1_3 -cipher ADH-AES128-SHA256:ADH-AES256-SHA256 -state -connect localhost:14000 -msg
CONNECTED(00000168)
SSL_connect:SSL初始化
TLS 1.2之前,警报[长度0002],致命内部
错误SSL3警报写入:致命:内部错误
SSL_connect:错误35516中的错误:错误:141A90B5:SSL例程:ssl_cipher_list_to_bytes:没有可用的密码:ssl\ statem\statem_clnt.c:3798:没有为最大支持的 SSL/TLS 版本启用密码,
没有可用的对等证书,
没有发送客户端证书 CA 名称
SSL 握手已读取 0 字节并写入 7 字节
验证:确定
新,(无),密码是(无) …