我正在为嵌入式Linux设备添加HTTPS支持.我尝试使用以下步骤生成自签名证书:
openssl req -new > cert.csr
openssl rsa -in privkey.pem -out key.pem
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 1001
cat key.pem>>cert.pem
Run Code Online (Sandbox Code Playgroud)
这有效,但我在使用Google Chrome时遇到了一些错误:
这可能不是您要找的网站!
该网站的安全证书不受信任!
我错过了什么吗?这是构建自签名证书的正确方法吗?
我已经看到了几个关于如何将PFX转换为证书文件的问题,但我需要采取另一种方式.
我有两个文件:
bob_cert.cert
bob_key.pem
我想将它们转换为单个.pfx文件.有没有这样做的工具?
几个星期前我已经下载了Privoxy,为了好玩,我很想知道它的简单版本是如何完成的.
我知道我需要配置浏览器(客户端)以向代理发送请求.代理将请求发送到Web(假设它是一个http代理).代理将收到答案......但代理如何将请求发送回浏览器(客户端)?
我在网上搜索了C#和http代理,但是没有找到让我理解它在幕后正确工作的东西.(我相信我不想要反向代理,但我不确定).
你们有没有一些解释或一些信息让我继续这个小项目?
这就是我的理解(见下图).
步骤1我将所有请求的客户端(浏览器)配置为在Proxy侦听的端口发送到127.0.0.1.这样,请求将不会直接发送到Internet,而是由代理处理.
步骤2代理查看新连接,读取HTTP标头并查看必须执行的请求.他执行请求.
步骤3代理从请求中接收答案.现在他必须从网上发送答案给客户但是怎么样???

Mentalis代理:我发现这个项目是一个代理(但我想要的更多).我可能会查看来源,但我真的想要一些基本的东西来理解更多的概念.
ASP代理:我也许可以在这里获得一些信息.
请求反射器:这是一个简单的例子.
这是一个带有简单Http代理的Git Hub存储库.
netsh命令想要一个appid(见这里):
netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还无法理解我应该如何知道GUID netsh要我提供的内容.任何提示?
我正在使用OpenSSL(而不是makecert)生成自签名SSL证书,以便在IIS中使用.
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes -subj '//CN=myhost'
Run Code Online (Sandbox Code Playgroud)
(双斜杠是正确的.没有它,上面的命令不起作用.)
openssl pkcs12 -export -out key.pfx -inkey key.pem -in cert.pem -name 'myhost'
Run Code Online (Sandbox Code Playgroud)
第一个命令运行成功完成.然而第二次陷入困境
将"屏幕"加载到随机状态 -
我正在使用Git for Windows(2.6.3)附带的OpenSSL(1.0.2d).有人遇到同样的问题吗?
澄清:问题如何在openssl中修复"无法写入'随机状态'"描述了与写入.rnd文件有关的问题.这里的问题似乎是产生随机状态.(仅在第二个命令中.)
我使用WCF创建了一个WebService.我正在进行自托管,我想启用HTTPS.根据我对此的理解,我需要创建一个证书并绑定到我想要使用的端口.
以下是我为处理此问题所采取的步骤:
从签名的根证书颁发机构创建临时服务证书
试图将证书绑定到端口号(在这种情况下为443)
步骤4的结果是以下错误:
SSL证书添加失败,错误1312
指定的登录会话不存在.它可能已经被终止了.
有没有人知道为什么我可能会收到此错误?
按照以下链接中的"如何:使用SSL证书配置端口"的说明操作:http://msdn.microsoft.com/en-us/library/ms733791.aspx,我在命令行上输入了此命令(duh) :
> netsh http add sslcert ipport:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid={EDE3C891-306C-40fe-BAD4-895B236A1CC8}
The parameter is incorrect.
Run Code Online (Sandbox Code Playgroud)
我的certhash指纹取自证书(本地计算机)>个人>证书文件夹中的证书.
该appidGUID生成.
还有什么问题我需要修复才能让它发挥作用?
在Visual Studio中创建新的C#项目时,生成的AssemblyInfo.cs文件包含指定程序集GUID的属性.属性上方的注释表明它"如果此项目暴露给COM".
我的程序集都没有包含需要对COM可见的类型,因此我已经标记了我的程序集[assembly: ComVisible(false)].那么指定GUID有什么意义吗?
我的感觉是答案是"不" - 那么为什么默认的AssemblyInfo.cs文件包含[assembly: ComVisible(false)]和[assembly: Guid("...")]?
编辑:
总结一下回答:
在它们之间,答案解释了当且仅当正在使用COM互操作时才需要指定GUID.所以,在我的情况下,没有必要使用GUID.
sharptooth进一步解释说,[assembly: ComVisible(false)]并不意味着不使用COM互操作,因为可以覆盖ComVisible各个类型.因此,默认的AssembyInfo.cs包含两者[assembly: ComVisible(false)]和GUID.
我有一个OpenSSL生成的PEM格式的X.509证书和它的关联密钥文件.连接到原型服务器时,此证书是身份验证所必需的.这在Linux上运行良好.我一直在使用Microsoft SChannel API来驱动Windows平台上的SSL/TLS连接,但我想使用相同的测试证书.我可以右键单击证书文件并将其导入我的证书库,但我相信私钥不会随之导入(即使我已将它们连接到同一文件中).
当我去运行SChannel代码时,我在初始化安全上下文时(通过InitializeSecurityContext)收到'SEC_E_NO_CREDENTIALS'错误.我怀疑这意味着缺少私钥.
有谁知道如何测试位于个人(或"我的")证书存储区中的证书中是否存在私钥,通过'certmgr.msc'进行访问?是否可以在商店中导入证书的新密钥文件?
任何见解或建议将不胜感激.
我使用HttpListenerMonoTouch 实现了一个非常简单的Web服务器.一切都很好.现在我需要添加HTTPS支持.我试着按照步骤进行操作
但我不知道在MonoTouch中设置证书的位置.只添加前缀"https://*:443"没有帮助,因为没有连接是可能的,并且不会抛出任何异常.
根据http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx,这可能是因为必须指定服务器证书("您可以使用配置服务器证书和其他侦听器选项HttpCfg.exe").
我怎么能在MonoTouch中做到这一点?
我有一些数据需要以SOAP格式发送到服务器。该服务器将立即确认它已收到消息。几个小时后,我(可能从另一台服务器)收到了一条SOAP消息,其中包含有关已处理数据的信息。
我读了Stackoverflow:如何发送SOAP请求和接收响应。但是,答案是8岁。尽管它们可能仍然有效,但是可能存在更新的技术。
看起来确实如此:Microsoft具有System.Web.Services.Protocols,并且具有SoapMessage,SoapClientMessage,SoapServerMessage等类。
查看这些类,我会发现很多类似SOAP的类(标头,扩展名,客户端消息,服务器消息...通常,所提供的示例向我指示了这些类如何协同工作以及如何使用它们。只能找到有关如何处理已经存在的SOAP消息的示例。
给定一些需要发送的数据,如何将这些数据包装到这些SOAP类之一中并发送此消息?
这些类是否为此目的?还是我应该坚持2011年的方法,您可以通过上面提到的Stackoverflow问题所建议的方式自己将自己的XML数据格式化为SOAP格式来创建SOAP Web请求?
非常抱歉,通常我会写一些我尝试过的东西。las,我看不到提供的SoapMessage类之间的关系。我不知道如何使用它们。
评论后加法
我正在使用Windows Server / Visual Studio(最新版本)/。NET(最新版本)/ C#(最新版本)。
与服务器的通信是相互认证的。我需要用于与服务器通信的证书为PEM(CER / CRT)格式。私钥是RSA。该证书由适当的CA颁发,服务器还将使用适当的CA使用的证书。因此,我不需要创建新的证书(实际上,它不会被接受)。如果需要,我愿意使用OpenSsl之类的程序转换证书。
我尝试使用Apache TomCat进行通信,但是我觉得对于每天发送一条SOAP消息并每天等待一个答案的任务来说,这实在太多了。
也许因为Java对我来说是一种全新的技术,所以我很难看到接收到的消息的内容。回到C#和.NET。
我打算创建一个供控制台应用程序使用的DLL。该函数将流中的某些数据作为输入。它将创建肥皂消息,发送该消息,等待正确接收到该消息的答复,然后等待(可能几个小时)以获取一条包含处理后数据结果的新肥皂消息。为了使正确的报告和取消成为可能,我想最好使用async-await来做到这一点。
如果无法在一个应用程序中完成发送订单和等待结果的操作,我愿意创建一个Windows服务来监听输入,但我希望保持简单。
(虚拟)计算机将仅用于此任务,因此没有其他人需要侦听端口443。每天将发送一封定单消息,每天发送一条结果消息。
我使用以下代码添加 http 侦听器:
public class WebServer
{
private readonly HttpListener _listener = new HttpListener();
private readonly Func<HttpListenerRequest, HttpListenerResponse, string> _responderMethod;
public WebServer(string[] prefixes, Func<HttpListenerRequest, HttpListenerResponse, string> method)
{
if (!HttpListener.IsSupported)
throw new NotSupportedException(
"Needs Windows XP SP2, Server 2003 or later.");
// URI prefixes are required, for example
// "http://localhost:8080/index/".
if (prefixes == null || prefixes.Length == 0)
throw new ArgumentException("prefixes");
// A responder method is required
if (method == null)
throw new ArgumentException("method");
foreach (string s in prefixes)
_listener.Prefixes.Add(s); …Run Code Online (Sandbox Code Playgroud) 我找到了很多答案如何将httplistener设置为使用HTTPS,但每个解决方案都需要使用命令行.我想这是最快的方法,但我想编写C#类来处理这个问题.
在旧的解决方案中,我使用了webserver类(在Internet的某个地方找到,我不记得确切的名称),它允许以这种方式添加证书:
webserver.Certificate = new X509Certificate2("MyCert.pfx", "MyPassword");
Run Code Online (Sandbox Code Playgroud)
有没有办法用httplistener实现这个?从代码显然.
问候.
c# ×6
ssl ×4
certificate ×3
httplistener ×3
https ×3
openssl ×3
windows ×3
.net ×2
netsh ×2
.net-2.0 ×1
com ×1
comvisible ×1
firewall ×1
guid ×1
ios ×1
networking ×1
proxy ×1
schannel ×1
soap ×1
wcf ×1
webserver ×1
x509 ×1
xamarin.ios ×1