我有一些资源,我必须使用SSL来访问使用自签名证书.通常,大多数工具都有一个简单的设置,允许无错误地访问这些工具或只是警告.但是,使用JVM执行此操作的正确方法似乎是将签名证书作为CA导入密钥库.
我有一个我想要使用的groovy脚本,但我更喜欢我的脚本在任何任何JVM上独立工作而无需修改密钥库或分发新的密钥库.有没有简单的方法来覆盖认证验证?
似乎这个问题已被提出并得到解答,但到目前为止,我遇到的每个解决方案都无济于事.我正在编写一个PowerShell脚本来运行一些REST API来获取使用信息.我的脚本只是在尝试与服务器通信时立即中断.为了测试,我做了一个非常简单的命令:
Invoke-RestMethod 'https://server:4443/login'
Run Code Online (Sandbox Code Playgroud)
它返回此错误:
Invoke-RestMethod : The underlying connection was closed: An unexpected error occurred on a send.
Run Code Online (Sandbox Code Playgroud)
我可以运行相同的命令,但使用URL google.com,我得到一个有效的返回,所以我知道该命令正在发挥作用.
如果我在服务器本身运行curl等效项,事情就会按预期完成.这是curl命令的详细输出的片段:
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取证书,以便在我的本地计算机上使用dev url.
我使用keytool生成了一个自签名证书,并将其与jboss连接.在chrome中,我可以单击带有x的锁来查看证书详细信息.
我下载了证书,将其添加到系统并将信任级别设置为始终信任.按照" 让Chrome接受自签名localhost证书"中的说明进行操作.然后我加载了页面(甚至重新启动浏览器,然后重新启动系统以确保一切都被拾取).
我仍然在chrome中看到带有红色x的锁,对于我的dev url,127.0.0.1和localhost.我认为让Chrome信任本地主机的网站是错误的,接下来是真正的问题,我需要什么特别的东西才能让它适用于我的开发网址?
我的hosts文件的dev url和localhost解析为127.0.0.1.在做真正的证书时,我知道必须指定域名,这让我想知道我是否需要为自定义dev url做一些特别的事情.
看看PayPal(https://www.paypal.com/)安全证书.它说:连接加密:高级加密(TLS_RSA_WITH_AES_256_CBC_SHA,256位密钥).
现在,如何创建自签名证书以使用相同的加密AES256?
我在Openssl中尝试了以下代码:
openssl> req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
我最终获得了128位证书.然后我尝试了:
openssl> genrsa -aes256 -out key.key 4096
openssl> req -new -key key.key -out cert.csr
openssl> x509 -req -days 365 -in cert.csr -signkey key.key -out cert.crt
openssl > rsa -in key.key -out key.key
即使我指定'-aes256',我也会再次获得128位证书:连接加密:高级加密(TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,128位键).
那么,我做错了什么,你能告诉我如何创建256证书吗?感谢帮助!
我正在通过https使用远程git存储库,它具有自签名证书.为了让git知道自签名证书,我在.gitconfig中有以下内容:
[http]
sslCAInfo = /home/user/myselfsigned.cert
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是当我添加另一个带CA签名证书的远程时,git(或curl?)错误地尝试使用此远程的cert文件.将证书应用于特定远程的正确语法是什么?
我正在使用 Angular http 模块调用由自签名证书启用的 https 端点。
代码类似于下面显示的内容:
export class AppComponent {
constructor(private http: HttpClient) {
}
title = 'my-app';
ngOnInit(): void {
this.http.get('https://internalapp.com/context/apps/all').subscribe((res: any[]) => {
console.log('sharief');
console.log(res);
});
}
}
Run Code Online (Sandbox Code Playgroud)
当 angular 应用程序在 Chrome 浏览器中运行时,会导致错误“net::ERR_CERT_AUTHORITY_INVALID”。此错误发生在 this.http.get(...) 方法调用上。
Node 的 https 模块有一个如下所示的选项,它似乎可以工作(从这里输入链接描述:
var req = https.request({
host: '192.168.1.1',
port: 443,
path: '/',
method: 'GET',
rejectUnauthorized: false,
requestCert: true,
agent: false
},
Run Code Online (Sandbox Code Playgroud)
问题:是否可以在 http.get 调用期间禁用证书验证?
对于Guzzle HTTP 客户端,我知道您可以将new GuzzleClient(['verify' => false])其设置为不检查证书,例如。当您使用自签名证书时。但是我怎样才能让它接受并信任特定的自签名证书,这样你就不会只开放任何证书,而只开放一个特定的证书 - 这可能吗?
由于各种原因,我创建了一个简单的HTTP服务器,并通过OpenSSL添加了SSL支持.我正在使用自签名证书.只要我将CA添加到受信任的根CA,IE,Firefox和Chrome就会愉快地加载内容.
但是,wget(即使使用--no-check-certificate标志)报告:
OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Run Code Online (Sandbox Code Playgroud)
如果我使用以下命令对我的服务器运行OpenSSL客户端:
openssl s_client -connect dnvista:82 -debug
Run Code Online (Sandbox Code Playgroud)
我回来了:验证错误:num = 19:证书链中的自签名证书验证返回:0然后
5852:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:.\ssl\s3_pkt.c:1060:SSL alert number 40
5852:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:.\ssl\s23_lib.c:188:
Run Code Online (Sandbox Code Playgroud)
wget和OpenSSL客户端根本不能使用自签名证书吗?
更新:
对于后来出现的任何人,添加此代码有助于OpenSSL客户端和Firefox:
EC_KEY *ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
SSL_CTX_set_tmp_ecdh(ctx, ecdh);
EC_KEY_free(ecdh);
Run Code Online (Sandbox Code Playgroud) 我有一个WCF服务,只在两台服务器机器之间使用.它绝不会公开使用.
我希望我能将SSL与自签名证书一起用于安全性.
我使用IIS7创建了一个证书,使用IE和MMC(Personal,TrustedRoot,Third-Party和TrustedPeople)将其安装在客户端计算机上.
我仍然无法通过代码或通过IE8获得服务,而不会质疑证书.
从IE我得到通常的"这个网站的安全证书有问题."
从代码我得到错误:"无法建立具有权限的SSL/TLS安全通道的信任关系"
为什么这不起作用?
我已经使用以下方法制作了我的证书和密钥
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
Run Code Online (Sandbox Code Playgroud)
并在我的 Golang 代码中配置它
log.Fatal(http.ListenAndServeTLS(":4201", "cert.pem", "key.pem", router))
Run Code Online (Sandbox Code Playgroud)
它在使用 chrome 访问时运行良好,但在使用 firefox 访问时会在控制台上引发错误。
2018/03/02 16:54:11 http:来自 100.67.56.121:54397 的 TLS 握手错误:远程错误:tls:未知的证书颁发机构
我该如何解决这个问题?