我为这个冗长的问题提前道歉.我遇到了自签名SSL证书的问题,我想记录到目前为止我尝试过的所有内容.
我正在开发一个与REST服务通信的应用程序.测试服务器使用自签名的ssl证书,我可以在我的计算机上安装该证书.这是一个需要密码才能安装的.p12文件.如果未安装此证书,则对服务器的所有请求都将返回403.
.p12在Keychain中安装三个项目,一个"根证书颁发机构",一个由"根证书颁发机构"颁发的"测试用户"证书,以及一个与"测试用户"证书相关联的私钥.
我通过给自己发送.p12文件,在iPad上安装了这个证书.我点击附件,输入密码,现在我可以在Safari中访问该网站.不幸的是,由于应用程序沙盒,这还不足以让我的应用程序与REST服务进行通信.
我正在使用ASIHTTPRequest来完成与我的应用程序中的REST服务的所有通信.每个请求都是ASIHTTPRequest的子类.我发现我必须做的第一件事就是调用,[self setValidatesSecureCertificate:NO];
以便它甚至可以尝试SSL连接到服务器.如果这就是我所做的,我会从服务中获得403错误代码.
现在我似乎无法弄清楚如何获得使用证书的请求.我已经尝试将这三个项目导出为单独的.cer文件,包括它们在项目中,并使用以下代码将它们添加到请求中:
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"cert" ofType:@"cer"]];
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (CFDataRef)data);
...
[self setClientCertificates:[NSArray arrayWithObjects:(id)cert, ..., nil]];
Run Code Online (Sandbox Code Playgroud)
虽然使用这种方法代码执行没有问题,但我仍然得到403错误.
我甚至尝试在我的应用程序中包含.p12文件并使用相同的代码导入它.这会失败,因为SecCertificateCreateWithData
返回nil.
我承认我真的不知道我在这里做什么.这一切都在我头上,任何人都可以给我的任何帮助将不胜感激.
我正在尝试将证书颁发机构(CA)文件名 - ca.crt添加到/ etc/ssl/certs,因为我遵循了本文.我复制了我的ca.crt文件ca.crt
并运行命令/etc/ssl/certs
.之后我检查了ca.crt
文件,但是我找不到我的CA. \
我无法弄清楚可能是什么问题.有人知道吗?
我有一种情况,客户端通过curl拨打https网址.https url的SSL证书是自签名的,因此curl无法进行证书验证并失败.curl提供了一个选项-k/ - insecure,它禁用证书验证.我的问题是,使用--insecure选项是在客户端和服务器加密之间完成的数据传输(因为它应该是https网址)?由于证书验证没有完成,我理解安全风险,但对于这个问题,我只关心数据传输是否加密.
我已按照SSL中的说明使用自托管WCF服务.当我尝试使用netsh在Windows 7上绑定证书时,如如何:使用SSL证书配置端口中所述.,它失败如下.
PS C:\> netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Bad numeric constant: 224.
At line:1 char:104
+ netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={001 <<<< 12233-4455-6677-8899-AABBCCDDEEFF}
+ CategoryInfo : ParserError: (224:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : BadNumericConstant
Run Code Online (Sandbox Code Playgroud)
C:\>netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
SSL Certificate add failed, Error: 1312
A specified logon session does not exist. It may already have been terminated.
Run Code Online (Sandbox Code Playgroud) 有很多关于这个问题的帖子(javax.net.ssl.SSLPeerUnverifiedException:没有对等证书),但我找不到任何适合我的问题.
许多帖子(像这样,这个)通过允许接受所有证书来"解决"这一点,但是,当然,除了测试之外,这不是一个好的解决方案.
其他人似乎很本地化,不适合我.我真的希望有人有一些我缺乏的见解.
所以,我的问题是:我正在一台只能通过本地网络访问的服务器上进行测试,通过HTTPS连接.我需要通过浏览器拨打电话工作正常.没有抱怨证书,如果你检查证书,这一切看起来都不错.
当我试用我的Android设备时,我明白了 javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
这是调用它的代码:
StringBuilder builder = new StringBuilder();
builder.append( /* stuff goes here*/ );
httpGet.setEntity(new UrlEncodedFormEntity(nameValuePairs));
ResponseHandler<String> responseHandler = new BasicResponseHandler();
// Execute HTTP Post Request. Response body returned as a string
HttpClient httpClient = MyActivity.getHttpClient();
HttpGet httpGet = new HttpGet(builder.toString());
String jsonResponse = httpClient.execute(httpGet, responseHandler); //Line causing the Exception
Run Code Online (Sandbox Code Playgroud)
我的代码MyActivity.getHttpClient()
:
protected synchronized static HttpClient getHttpClient(){
if (httpClient != null)
return httpClient;
HttpParams httpParameters = new BasicHttpParams(); …
Run Code Online (Sandbox Code Playgroud) 我正在使用git bash在windows中构建一个角度应用程序,到目前为止,我已经能够使用你的脚手架,没有问题,但是当我尝试发出以下命令时.有人可以指点我来解决这个问题.
凉亭安装angular-bootstrap
我收到以下错误:
bower error Request to https://bower.herokuapp.com/packages/angular-reso
urce failed: SELF_SIGNED_CERT_IN_CHAIN
Stack trace:
Error: Request to https://bower.herokuapp.com/packages/angular-resource failed:
SELF_SIGNED_CERT_IN_CHAIN
at createError (c:\Users\arusarka\AppData\Roaming\npm\node_modules\bower\nod
e_modules\bower-registry-client\lib\util\createError.js:2:15)
at Request._callback (c:\Users\arusarka\AppData\Roaming\npm\node_modules\bow
er\node_modules\bower-registry-client\lib\lookup.js:97:29)
at self.callback (c:\Users\arusarka\AppData\Roaming\npm\node_modules\bower\n
ode_modules\request\request.js:129:22)
at Request.EventEmitter.emit (events.js:95:17)
at Request.request.emit (c:\Users\arusarka\AppData\Roaming\npm\node_modules\
bower\node_modules\bower-registry-client\node_modules\request-replay\index.js:69
:33)
at ClientRequest.self.clientErrorHandler (c:\Users\arusarka\AppData\Roaming\
npm\node_modules\bower\node_modules\request\request.js:239:10)
at ClientRequest.EventEmitter.emit (events.js:95:17)
at CleartextStream.socketErrorListener (http.js:1528:9)
at CleartextStream.EventEmitter.emit (events.js:95:17)
at SecurePair.<anonymous> (tls.js:1368:19)
Run Code Online (Sandbox Code Playgroud) 由于SSL是安全互联网的支柱,(现在技术上称为TLS),我应该阅读哪些好书来理解它的各个方面?
我想我还需要学习一些数学,一些PKI书籍,加密书和Sysadmin书籍.由于这不是一个完整的清单,我有兴趣听听你认为明智的学习内容.
我想在我的NodeJS应用程序中动态返回ssl证书信息.我有两个链接到同一节点应用程序的域名.我只看到在创建服务器时可以指定ssl设置.是否可以根据请求的URL动态返回ssl证书?
否则,如果我必须在另一个端口上创建第二个服务器实例,我是否能够将每个请求透明地传送到原始端口?我可以让它看起来像是没有在第二个端口上运行吗?
谢谢,杰夫
有谁知道是否可以在Ubuntu下创建自己的通配符证书?例如,我希望以下域使用一个证书:
https://a.example.com
https://b.example.com
https://c.example.com
Run Code Online (Sandbox Code Playgroud) 看看Heroku文档中的这个链接:
https://devcenter.heroku.com/articles/avoiding-naked-domains-dns-arecords#subdomain-redirection
黄色方框说:
使用子域重定向时,通过SSL(即https://mydomain.com)直接向裸域发出的请求 将收到警告.这是预期的,只需循环和公布您的安全URL的子域格式即可避免.
这真的是唯一的解决方案吗?只是希望没有wwws的人不输入网址?
我有几个问题,人们只是从网址中删除子域到达主页(在https上)并遇到ssl警告?
有没有其他人想出办法解决这个问题?
ssl-certificate ×10
ssl ×5
https ×2
security ×2
android ×1
bower ×1
ca ×1
certificate ×1
curl ×1
heroku ×1
install ×1
ios ×1
netsh ×1
node.js ×1
nsurlrequest ×1
openssl ×1
pki ×1
subdomain ×1
wcf-binding ×1
windows-7 ×1