【发布时间】:2014-02-04 15:31:07
【问题描述】:
在我的 SIP Sorcery 项目中,我正在创建一个到远程服务器的 TLS 连接,并由远程服务器提供证书提供程序。 使用以下代码 sn-p 连接似乎很好:
static SIPTLSChannel channel_tls;
static IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse("1.2.3.4"), 5061);
static IPEndPoint localEndPoint= new IPEndPoint(IPAddress.Parse("10.0.0.1"), 8080);
static void Main(string[] args)
{
//Certificate file path
string Certificate = Environment.CurrentDirectory + @"\Certificate\myCa.cer";
// Load the certificate into an X509Certificate object.
X509Certificate2 cert = new X509Certificate2(Certificate);
//TLS Channel connection
channel_Tls = new SIPTLSChannel(cert, localEndPoint);
Transport.RemoveSIPChannel(channel_Tcp);
Transport.AddSIPChannel(channel_Tls);
SIPRequest subscribe = new SIPRequest();
.... [setting subscribe parameters] ....
channel_Tls.Send(remoteEP, Encoding.UTF8.GetBytes(subscribe.ToString()), "myCa.cer");
}
但是我很困惑如何创建私钥来加密/解密在客户端和服务器之间发送的数据?我可以看到 cert.PublicKey 不为空。我正在接收一些应用程序数据,但由于我无法在没有私钥的情况下对其进行解密,所以我看不到客户端和服务器之间出现了什么问题...
【问题讨论】:
-
您是否独立于 TLS 进行加密?
-
@PeterRitchie 正如 sipwiz 指出的那样,SIP Sorcery 中的 TLS 封装处理加密/解密。所以我想我的实际问题是如何获得匹配的私钥/公钥值对。
-
如果 TLS 进行加密/解密,你需要密钥做什么?
标签: c# encryption sip x509certificate2