标签: ssl-certificate

curl中--cacert和--capath之间的区别?

什么时候会使用--cacert选项与(CLI)中的--capath选项curl.

--cacert似乎引用包含多个PEM的单片文件.假设它扫描一下,找到匹配的主机名?

--capath似乎引用了多个文件所在的目录.卷曲是否将相应的证书作为文件名取出?

ssl curl ssl-certificate

25
推荐指数
1
解决办法
5万
查看次数

使用客户端证书和Android的HttpsURLConnection通过SSL上传文件

我正在尝试将文件上传到受SSL保护的Web服务,并且需要客户端证书(由内部CA签名).与上传文件相比,与Web服务的通信运行良好(下载文件,查询,运行命令和执行各种POST工作正常).

上传文件时,我得到一个SSLException(javax.net.ssl.SSLException),上面写着"写入错误:ssl = 0x5fe209c0:系统调用期间的I/O错误,同级连接重置".

我创建了一个重复的服务器并删除了SSL和客户端证书要求,并试图通过'vanilla'HTTP上传,并且它运行良好.

我尝试过使用setFixedLengthStreamingMode(int)setChunkedStreamingMode(int)但没有成功.使用它们时,会从该write方法抛出异常,并且在不使用它们时,会从调用中抛出相同的异常getResponseCode().

我找不到有关服务器中的错误的任何信息EventVwr.

我们的其他客户端(iOS客户端)能够在那里上传文件,因此它必须是我所做的 - 但我无法弄清楚是什么.

我不确定如何进一步调试此问题.

请帮忙.

编辑1

我们做了很多调试工作,发现:

  • 小文件按预期上传(44kb是成功上传的最大文件的大小,并在~1200ms上传).
  • 46kb文件无法上传.失败大约需要2分钟(134120ms).

编辑2

在你的评论中读到之后,现在我让Fiddler玩得很好(感谢这个问题).Fiddler得到了这个文件,但没有成功发送它.请求(原始)看起来像:

POST https://192.168.2.2/rest/transfer/strong/Upload/Full?Path=%5C20140807_113255_20.jpg&Root=2 HTTP/1.1
SessionToken: 1234 // We use this for session management
FileMetadata: {"FileSize":"1315496","FileName":"GrumpyCat.jpg"}
Connection: Keep-Alive
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.1.1; GT-N7100 Build/JRO03C)
Host: 192.168.2.2
Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded
Content-Length: 1315496

;odiao;awriorijgoeijoeirj;oedfrvgerg... // The image
Run Code Online (Sandbox Code Playgroud)

Fiddler的回应(也是RAW)是:

HTTP/1.1 504 Fiddler - Send Failure
Date: Wed, 20 Aug 2014 …
Run Code Online (Sandbox Code Playgroud)

java ssl https android ssl-certificate

25
推荐指数
1
解决办法
1997
查看次数

"无法找到所请求目标的有效证书路径",但浏览器表示没问题

我正在开发一个Java应用程序,它连接到https://ut.eurodw.eu/(欧洲Datawarehouse的测试环境)中公开的SOAP服务.我正在开发我的开发机器,最近用Windows 8.1重新格式化了.今天,我尝试通过SOAP从我的程序向他们发送创建请求,并收到此错误:

Caused by: javax.xml.ws.WebServiceException: Could not send Message.
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146)
    at com.sun.proxy.$Proxy110.createDeal(Unknown Source)
    at it.csttech.edwin.services.spring.EdwinServiceImpl.createDeal(EdwinServiceImpl.java:102)
    at it.csttech.edwin.consumercredit.data.managers.spring.DealManagerImpl.createEdCode(DealManagerImpl.java:319)
    ... 77 more
Caused by: javax.net.ssl.SSLHandshakeException: SSLHandshakeException invoking https://ut.eurodw.eu/edservices/2.2/DealService.svc: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1339)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1323)
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:628)
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:565)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:474)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:377)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:330)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
    ... 80 more …
Run Code Online (Sandbox Code Playgroud)

java ssl ssl-certificate tomcat7 windows-8.1

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

使用自签名证书和cURL?

我有一个使用自签名证书运行的烧瓶应用程序.我可以使用以下命令发送卷曲请求:

curl -v -k -H "Content-Type: application/json" -d '{"data":"value1","key":"value2"}' https://<server_ip>:<port>
Run Code Online (Sandbox Code Playgroud)

详细的日志显示一切顺利.

我想避免使用-k(--insecure)选项,而是指定curl可以使用的.pem文件.看一下curl手册页,我发现你可以使用--cert选项来做到这一点.所以我用这个创建了一个.pem文件:

openssl rsa -in server.key -text > private.pem
Run Code Online (Sandbox Code Playgroud)

使用private.pem文件时CURL会抛出此错误:

curl: (58) unable to use client certificate (no key found or wrong pass phrase?)
Run Code Online (Sandbox Code Playgroud)

有什么建议? - 或者这是否只有正确签署的证书?

TNX

ssl curl ssl-certificate

25
推荐指数
1
解决办法
5万
查看次数

无法使用openssl获取私钥(无起始行:pem_lib.c:703:期望:任何私钥)

我有一个.key文件

openssl rsa -text -in file.key

我明白了

unable to load Private Key
140000419358368:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY
Run Code Online (Sandbox Code Playgroud)

我也有一个.cer文件,当我这样做

openssl x509 -text -in file.cer

我明白了

unable to load certificate
140387178489504:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Run Code Online (Sandbox Code Playgroud)

但如果在这里指出我运行命令,如:

openssl x509 -text -inform DER -in file.cer

我明白了

Certificate:
    Data:
        Version: 3 (0x2)
        Some more information
        ...
-----BEGIN CERTIFICATE-----
MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NjcwDQYJKoZIhvcNAQEF
...
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

但这似乎与关键不起作用,因为当我跑

openssl rsa -text -inform DER -in aaa010101aaa__csd_10.key

我明白了

unable to load Private Key
140004844304032:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1337: …
Run Code Online (Sandbox Code Playgroud)

linux openssl ssl-certificate private-key

25
推荐指数
3
解决办法
10万
查看次数

Visual Studio 2017提供"将证书添加到受信任的根证书存储失败,并显示以下错误"

我试图在SSL模式设置为true的情况下运行ASP MVC应用程序,每当我运行应用程序时,我都会立即信任IIS Express SSL证书.单击是后,它会显示错误消息'将证书添加到受信任的根证书存储失败,并显示以下错误.访问被拒绝'.我以管理员模式运行Visual Studio 2017.我还通过访问MMC删除了localhost证书.有没有其他人遇到过这个问题.

错误截图

SOLN:这对我有用.删除所有localhost证书.在添加/删除程序中运行修复IIS Express.将localhost证书从个人/证书复制并粘贴到受信任的根证书,它不再抱怨.

ssl ssl-certificate visual-studio iis-express

25
推荐指数
5
解决办法
9120
查看次数

SSL证书可以由多个证书颁发机构签名吗?

将信任分散一点是很好的,所以我们不必在任何实例中只依赖一个根.

是否可以拥有一个由多个CA签名的证书?

certificate-authority ssl-certificate

24
推荐指数
3
解决办法
9515
查看次数

如何为SSL上的双向身份验证的本地测试创建客户端证书?

我正在尝试在IIS7上运行的Web应用程序上设置双向身份验证.客户端主要是移动设备,首先我试图使用第三代iPad运行演示.我以为我首先要让它在我的工作站上运行(也运行IIS),然后通过iPad复制工作证书.

但是我撞墙了.

我已经让网站通过https安全运行并安装了自签名服务器证书,但我似乎无法弄清楚如何生成我可以在iPad上安装的客户端证书.当我在运行Windows 7的本地工作站上工作时,我无法使用通常的方法http://machinename/CertSvr来执行此操作.

所以我想知道是否有办法makecert生成测试客户端证书,或者我是否可以更改服务器证书中的使用标志,使其适合在客户端上使用.或者也许还有一些工具,谷歌的最后一天还没有发现?

更新:

我找到了这个指南并跟着它来了.这一切似乎工作,没有错误,我结束了两个PFX文件,一个用于服务器和一个客户端(我产生这些使用pvk2pfx,并保持原有的.pvk.cer以防万一的文件).

我安装了服务器证书Certificates (Local Computer) > Trusted Root Certification Authority并在其下安装了客户端证书Certificates (Current User) > Personal.我还将服务器证书(CA一个)导入IIS.当IIS配置为接受或忽略客户端证书时,一切正常.但是一旦设置为'Require',我在申请该网站时会得到403.7.我也尝试将客户端证书导入到IE/Chrome中的证书存储区,但同样没有骰子.

有什么明显的东西我做错了吗?

iis-7 client-certificates ssl-certificate windows-7

24
推荐指数
2
解决办法
6万
查看次数

HttpWebrequest失败,内部异常验证失败,因为远程方已关闭传输流

使用C#,.Net 4.5,我试图通过远程服务器上的HttpWebRequest发送Web请求.请参阅下面的代码.我尝试了一些论坛建议的大多数解决方案,但我总是遇到同样的错误.请参阅下面的堆栈跟踪.调用request.GetReponse()方法时抛出错误.

其他信息,基本上,我正在尝试调用安装在远程服务器上的vmware的vCenter组件的reloadSslCertificate功能.目前,该错误仅发生在vCenter 5.5上.它在5.1及以下版本中工作正常.

        var uri = String.Format("https://{0}/some_url", serverName);
        var request = (HttpWebRequest)WebRequest.Create(uri);
        request.KeepAlive = true;
        request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.8");
        request.Credentials = credential;
        request.CookieContainer = cookieContainer;


        var response = request.GetResponse();
Run Code Online (Sandbox Code Playgroud)

异常:System.Net.WebException:基础连接已关闭:发送时发生意外错误.---> System.IO.IOException:身份验证失败,因为远程方已关闭传输流.System.Net.Security.SslState的System.Net.Security.SslState.StartReadFrame(Byte []缓冲区,Int32 readBytes,AsyncProtocolRequest asyncRequest)处于System.Net.Security.SslState的System.Net.Security.SslState.StartReceiveBlob(Byte []缓冲区,AsyncProtocolRequest asyncRequest). System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst,Byte [] buffer,AsyncProtocolRequest)上的System.Net.Security.SslState.StartSendBlob(Byte []传入,Int32计数,AsyncProtocolRequest asyncRequest)中的CheckCompletionBeforeNextReceive(ProtocolToken消息,AsyncProtocolRequest asyncRequest) System.Net.Security.SslState上的asyncRequest).

提前致谢.

c# vmware ssl-certificate system.net.webexception vcenter

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

R:使用TLS/SSL安全下载数据

官方声明

在过去,基础R download.file()无法使用HTTPS协议,因此必须使用RCurl.自R 3.3.0起:

所有版本都支持https:URL,默认方法是download.file(),url()和使用它们的代码.遗憾的是,无法保证可以访问任何特定的https:URL....不同的访问方法可能允许不同的协议或使用私有证书包...

download.file() 帮助下仍然说道:

提供的包"RCurl"提供了更全面的URL下载工具.

其中(顺便提一下包括cookie和标题管理).

基于RCurl常见问题解答(查找"当我尝试通过https与URL进行交互时,我收到错误"),可以通过以下方式管理HTTPS URL:

getURL(url, cainfo="CA bundle")
Run Code Online (Sandbox Code Playgroud)

其中CA bundle是证书颁发机构捆绑文件的路径.一个这样的捆绑可以从卷曲网站本身获得:https:
//curl.haxx.se/ca/cacert.pem

当前状态

测试基于Windows平台

对于许多HTTPS网站的 download.file()工作原理如下:

download.file(url="https://www.google.com", destfile="google.html")
download.file(url="https://curl.haxx.se/ca/cacert.pem", destfile="cacert.pem")
Run Code Online (Sandbox Code Playgroud)

关于RCurl,使用cacert.pem上面下载的包,可能会出现错误:

library(RCurl)
getURL("https://www.google.com", cainfo = "cacert.pem")    
# Error in function (type, msg, asError = TRUE)  : 
#   SSL certificate problem: unable to get local issuer certificate
Run Code Online (Sandbox Code Playgroud)

在这种情况下,只需删除对证书包的引用即可解决问题:

getURL("https://www.google.com")                      # works
getURL("https://www.google.com", ssl.verifypeer=TRUE) # works
Run Code Online (Sandbox Code Playgroud)

ssl.verifypeer = TRUE用于确保成功不是由于getURL()压制安全性.该论点记录在RCurl FAQ中 …

ssl curl r ssl-certificate rcurl

24
推荐指数
1
解决办法
1180
查看次数