由于各种原因,我创建了一个简单的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) 在IIS 7.5 Windows Server 2008中,如何使用.pfx(包含私钥)和.cer(包含公钥)文件创建自签名证书?
我使用了这个指南:http://technet.microsoft.com/en-us/library/cc753127(v = ws.10).aspx
我在IIS中创建了证书.当我导出它时,它只导出.pfx文件,而不是.cer文件.
谢谢,
我想使用自签名证书向自定义服务器发出HTTPS请求.我正在使用NSURLConnection类并处理身份验证问题,但始终在控制台中收到错误消息:
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
Run Code Online (Sandbox Code Playgroud)
然后使用以下错误调用方法"connection:didFailWithError:":
Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0x150094100>, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9802, NSErrorPeerCertificateChainKey=<CFArray 0x1500ddd90 [0x19f6dab68]>{type = immutable, count = 1, values = (
0 : <cert(0x14e6fb370) s: (server certificate name) i: (custom CA name)>
)}, NSUnderlyingError=0x1504ae170 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be …Run Code Online (Sandbox Code Playgroud) 我已经使用以下方法制作了我的证书和密钥
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:未知的证书颁发机构
我该如何解决这个问题?
我正在尝试使用System.Net.Mail.SmtpClient类通过我公司的电子邮件服务器中继电子邮件.与邮件服务器的所有SMTP连接都必须是SSL,并且它使用自签名证书.这对于Outlook来说很好,你可以在警告对话框上单击确定,但是有没有人知道让SmtpClient接受自签名证书的方法?
我打算在Windows Azure平台上使用此应用程序,因此我无法将自签名证书安装为受信任的根.
我为iOS编写了一个小应用程序,我使用的是Mac OS X 10.6.6,Xcode 3.2.5和iOS SDK 4.2,它们都运行在Virtual Box机器4.0中.
现在我希望应用程序在我的iPhone上运行并将其分发给一些beta测试人员.因为我不是注册苹果开发者,我不想向苹果支付99美元,我需要找到其他方法.
我在网上找到的第一件事是alex whittemore的教程: alexwhittemore.com
我按照说明创建了自签名根证书,二进制修补Xcode程序并在构建过程中添加了一些脚本.之后,我切换到"调试"到"释放"模式,从"模拟器"切换到"设备".构建过程以警告消息结束:
应用程序验证失败.签名无效,或者未使用Apple提交的证书签名.(-19011)
但我仍然在Release-iphoneos文件夹中有一个appname.app文件夹,我可以通过我的越狱iphone的/ Applications/-folder中的ssh或scp进行传输.之后我在iphone上调用"uicache",应用程序显示在跳板中.我也可以启动应用程序,一切正常.
现在是问题,我想要一个我的应用程序的IPA文件.正如我在网上看到的,IPA文件只不过是名为"Payload"的文件夹中的appname.app文件夹,与两个名为iTunesArtwork和iTunesMetadata.plist的文件一起压缩.我用512x512 jpeg图像创建了iTunesArtworks文件,并在网上找到了一些预设的plist文件.之后,必须将appname.zip文件重命名为appname.ipa.我手动完成了这个过程,并通过scp将IPA文件传输到我的iphone上的installous-app的download-folder.然后我开始安装并尝试安装我的应用程序 - 出现错误消息:
安装失败:ipa无效
我在网上搜索了此错误消息,并发现了有关更新我的Appsync和Installous-installation的信息.我从hackulo.us-repository更新了这两个程序,但这没有帮助.
所以我想,在IPA创建过程中我做错了什么.我做了一些研究,发现可以将appname.app-folder拖放到itunes,后者会自动生成一个IPA文件.然后你可以在iTunes的某个文件夹中找到IPA文件.我将此文件复制到我的iphone上的installous下载文件夹,并尝试再次安装此文件,但显示相同的错误消息.
我的问题:如果我有一个自签名的应用程序,如何为installous制作有效的IPA文件?安装检查签名吗?
也许有人对我有暗示......
编辑:
我找到了解决问题的方法.
因为我想了解有关installous-error-message的更多信息,我通过我的iphone上的cydia安装了"syslog toggle"和"syslogd to/var/log/syslog",以便将详细信息记录到/ var/log/syslog.然后我尝试再次安装IPA文件,我从installd守护进程的syslog中收到一条消息,IPA文件的最低iOS版本要求为4.2,而我的iphone在iOS 4.0下运行.
*installd [163]:00503000 verify_bundle_metadata:系统版本低于最低操作系统版本*
通过ssh将appname.app-folder复制到/ Applications /,但是使用错误的最小iOS版本参数构建,将应用程序安装为系统应用程序是没有问题的.所以我用最小的权限重建我的应用程序-iOS版本为我的iPhone.
我尝试再次安装,但我再次收到有关无效IPA的错误消息.这次installd守护进程告诉我在我的iphone的syslog中,它无法安装系统应用程序:
*installd [193]:00503000 preflight_application_install:无法安装系统或内部应用程序*
这个问题很容易解决,因为我仍然在/ Applications /中将应用程序安装为系统应用程序.我只需要删除/Applications/appname.app文件夹并通过ssh用户"mobile"两次调用"uicache".然后我再次尝试安装并试图安装我的IPA文件 - 瞧瞧:它工作了!
也许我能够帮助有类似问题的人.如果出现一些像"invalid ipa"这样的通用错误消息,通过cydia安装syslog-apps似乎是一个好主意,以便仔细查看installous的错误消息.
ps:我真的很恼火,我的问题被主持人关闭了!仅仅因为有人认为,我的问题"通常不适用于全球互联网用户".关闭问题太愚蠢了!现在你看到:我得到了一个解决方案,我在这里发布了..也许它将来会帮助别人!你不应该通过过度控制用户内容而与维基百科犯同样的错误.
让我们解决这个问题......我:
使用Visual Studio 2012
开发VB.NET应用程序 - 主要是.NET framework 3.5,一些2.0.
使用Windows 7进行开发(用户也使用Windows 7.有少量内部用户(少于40个).
我也将说明我是新手,并不完全理解这个过程.我确实理解加密/散列/密钥等的基本概念,但我不能告诉你为什么你可能需要一个.cer文件而不是一个.pfx文件.
接着...
我们有一个应用程序使用证书来签署已经工作了三年(或大约)年的清单.我们最近从Visual Studio 2008升级到Visual Studio 2012,基本上跳过了Visual Studio 2010.在该过程的某个地方,证书现在无效或已损坏.
建议的解决方案:用makecert.exe"就像我们上次做的那样" 制作新的解决方案.当我们需要它时,没有必要支付证书是我们自己的一小部分用户以及没有看到"你信任这个出版商吗?"的小便利.消息(我想?).
尝试发布时,确切的错误是:
无法发布,因为项目无法构建.
签名时出错:无法签署bin\Release\app.publish\setup.exe.SignTool错误:签名者的证书对签名无效.SignTool错误:尝试签名时发生错误:bin\Release\app.publish\setup.exe
现在,文章使用.NET Framework 2.0在您的应用程序中支持证书说:
对于桌面应用程序,通常在用户存储中安装证书.
因此,当我查看用户存储(通过带有证书管理单元的MMC)时,我看到:

红线所在的是OLD/INVALID证书.另一个仍未过期,我的用户名(2013-06-20).
当我从商店中选择时,我看到了:


如果你很好奇,另一个直观的地方就是这样:

那么如何添加另一个旧/坏的呢?
这是我尝试过的:
按照这些说明,我执行了
makecert -n "CN=TempCA" -r -sv TempCA.pvk TempCA.cer
Run Code Online (Sandbox Code Playgroud)
现在我有一个.pvk文件和一个.cer文件.然后我按照Pvk2Pfx(Windows驱动程序)中的说明运行
pvk2pfx.exe -pvk TempCA.pvk -spc TempCA.cer -pfx TempCA.pfx
Run Code Online (Sandbox Code Playgroud)
现在我有一个.pfx文件......(这是我需要的吗?),但是当我尝试使用MMC导入证书存储区时,无论如何我使用的密码都是错误的 - 即使我复制并粘贴它.(这听起来像导入程序中的一个错误...我可以重现这个.)
在导入 …
基本上我有这个:
function request($url) {
return file_get_contents($url, false, stream_context_create(array(
"ssl" => array(
"verify_peer" => true,
"allow_self_signed" => false,
)
)));
}
request("https://[A]");
request("https://[B]");
Run Code Online (Sandbox Code Playgroud)
其中[A]是具有"真实"证书的服务器上的某个URL,而[B]是仅具有自签名证书的URL.
使用[A]它工作正常,[B]我得到这个:
file_get_contents(): Failed to enable crypto
Run Code Online (Sandbox Code Playgroud)
这是一个相当不幸的错误消息应该是"服务器证书验证失败",但很好......
现在我想:"好吧,[B]是我的测试系统 - 我不关心证书"并将上下文改为:
"verify_peer" => false,
"allow_self_signed" => true,
Run Code Online (Sandbox Code Playgroud)
它现在应该接受任何服务器证书,甚至我的自签名证书.但它仍然是相同的行为 - [A]有效,[B]没有.为什么?
顺便说一句:我知道它适用于卷曲延伸,但我想在没有它的情况下击败它.
如果我有一个不在机器的受信任根证书存储区中的自签名证书,如何在不将该证书添加到受信任的根存储区的情况下验证PE文件是否使用该证书进行了Authenticode签名?
C#是首选,但C++中的答案也很好.
StackOverflow上已经有很多类似的问题,但到目前为止还没有一个可以接受的答案.它必须是Authenticode,我无法将其添加到证书存储区.它也不能是购买的证书,因为它需要更长的有效时间(不论时间戳).
除了复制一大块Mono签名检查代码之外,我不知道Win32或.NET中的解决方案.
self-signed ×10
certificate ×3
https ×3
openssl ×2
ssl ×2
authenticode ×1
c# ×1
ca ×1
clickonce ×1
code-signing ×1
cydia ×1
firefox ×1
go ×1
iis ×1
ios ×1
ipa ×1
iphone ×1
localhost ×1
objective-c ×1
php ×1
smtpclient ×1
wget ×1
windows ×1