mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-08-31 10:58:28 +00:00
fix(DebugWebsocketSink): enhance certificate generation with CS LAN IP support
This commit is contained in:
parent
ab7453d39d
commit
a8a494bb22
1 changed files with 27 additions and 9 deletions
|
|
@ -155,21 +155,39 @@ namespace PepperDash.Core
|
||||||
certGenerator.AddExtension(X509Extensions.ExtendedKeyUsage, false,
|
certGenerator.AddExtension(X509Extensions.ExtendedKeyUsage, false,
|
||||||
new ExtendedKeyUsage(new[] { KeyPurposeID.id_kp_serverAuth, KeyPurposeID.id_kp_clientAuth }));
|
new ExtendedKeyUsage(new[] { KeyPurposeID.id_kp_serverAuth, KeyPurposeID.id_kp_clientAuth }));
|
||||||
|
|
||||||
// Subject Alternative Names: DNS + IP
|
|
||||||
|
|
||||||
|
|
||||||
|
// Subject Alternative Names: DNS + IP(s), including the CS LAN IP if the processor has one
|
||||||
|
var generalNames = new System.Collections.Generic.List<GeneralName> { new GeneralName(GeneralName.DnsName, fqdn) };
|
||||||
|
|
||||||
System.Net.IPAddress parsedIp;
|
System.Net.IPAddress parsedIp;
|
||||||
if (System.Net.IPAddress.TryParse(ipAddress, out parsedIp))
|
if (System.Net.IPAddress.TryParse(ipAddress, out parsedIp))
|
||||||
{
|
{
|
||||||
certGenerator.AddExtension(X509Extensions.SubjectAlternativeName, false,
|
generalNames.Add(new GeneralName(GeneralName.IPAddress, ipAddress));
|
||||||
new GeneralNames(new GeneralName[] {
|
|
||||||
new GeneralName(GeneralName.DnsName, fqdn),
|
|
||||||
new GeneralName(GeneralName.IPAddress, ipAddress)
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
certGenerator.AddExtension(X509Extensions.SubjectAlternativeName, false,
|
var csAdapterId = CrestronEthernetHelper.GetAdapterdIdForSpecifiedAdapterType(EthernetAdapterType.EthernetCSAdapter);
|
||||||
new GeneralNames(new GeneralName(GeneralName.DnsName, fqdn)));
|
if (!csAdapterId.Equals(EthernetAdapterType.EthernetUnknownAdapter))
|
||||||
|
{
|
||||||
|
var csIpAddress = CrestronEthernetHelper.GetEthernetParameter(CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_CURRENT_IP_ADDRESS, csAdapterId);
|
||||||
|
|
||||||
|
System.Net.IPAddress parsedCsIp;
|
||||||
|
if (csIpAddress != ipAddress && System.Net.IPAddress.TryParse(csIpAddress, out parsedCsIp))
|
||||||
|
{
|
||||||
|
generalNames.Add(new GeneralName(GeneralName.IPAddress, csIpAddress));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
CrestronConsole.PrintLine(string.Format("CreateCert: No CS LAN adapter available: {0}", ex.Message));
|
||||||
|
}
|
||||||
|
|
||||||
|
certGenerator.AddExtension(X509Extensions.SubjectAlternativeName, false,
|
||||||
|
new GeneralNames(generalNames.ToArray()));
|
||||||
|
|
||||||
// Sign with SHA256withRSA
|
// Sign with SHA256withRSA
|
||||||
var signatureFactory = new Asn1SignatureFactory("SHA256WITHRSA", keyPair.Private, random);
|
var signatureFactory = new Asn1SignatureFactory("SHA256WITHRSA", keyPair.Private, random);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue