https stuff and cert generator for the webserver
This commit is contained in:
1 parent
3f18832b38
commit
33252ab19c
16 files changed
+2270
-226
No files matched your search
@@ -0,0 +1,84 @@
|
||||
using Security.Cryptography;
|
||||
using Security.Cryptography.X509Certificates;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Security.Permissions;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ConfigHttpApi
|
||||
{
|
||||
public static class ConfigHttpApi
|
||||
{
|
||||
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
|
||||
public static void reserveURL(string networkString)
|
||||
{
|
||||
HttpApi.ReserveURL(networkString, "D:(A;;GX;;;S-1-1-0)");
|
||||
}
|
||||
|
||||
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
|
||||
public static void bindCert(string ip, int port, X509Certificate2 cert)
|
||||
{
|
||||
IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse(ip), port);
|
||||
if (HttpApi.QuerySslCertificateInfo(endpoint) != null)
|
||||
{
|
||||
HttpApi.DeleteCertificateBinding(endpoint);
|
||||
}
|
||||
|
||||
HttpApi.BindCertificate(endpoint, cert.GetCertHash(), StoreName.My, new Guid("7baf41f1-48b7-42cb-b145-f815499cb48f"));
|
||||
}
|
||||
|
||||
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
|
||||
public static void addCertToStore(X509Certificate2 cert)
|
||||
{
|
||||
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
|
||||
store.Open(OpenFlags.ReadWrite);
|
||||
store.Add(cert);
|
||||
store.Close();
|
||||
}
|
||||
|
||||
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
|
||||
public static X509Certificate2 getSelfSignedCert(string subjectName)
|
||||
{
|
||||
CngKey key = CngKey.Create(CngAlgorithm2.Rsa);
|
||||
X509CertificateCreationParameters param = new X509CertificateCreationParameters(
|
||||
new X500DistinguishedName("CN=Vocaluxe Server"));
|
||||
param.SubjectName = new X500DistinguishedName("CN=localhost");
|
||||
param.EndTime = DateTime.Today.AddYears(20);
|
||||
param.SignatureAlgorithm = X509CertificateSignatureAlgorithm.RsaSha512;
|
||||
OidCollection oc = new OidCollection();
|
||||
oc.Add(new Oid("1.3.6.1.5.5.7.3.1"));
|
||||
X509Extension eku = new X509EnhancedKeyUsageExtension(oc, true);
|
||||
param.Extensions.Add(eku);
|
||||
|
||||
return key.CreateSelfSignedCertificate(param);
|
||||
}
|
||||
|
||||
/*public static X509Certificate2 getCert(string subject)
|
||||
{
|
||||
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
|
||||
|
||||
Mono.Security.Authenticode.PrivateKey key = new Mono.Security.Authenticode.PrivateKey { RSA=RSA.Create()};
|
||||
|
||||
|
||||
Mono.Security.X509.X509CertificateBuilder x509 = new Mono.Security.X509.X509CertificateBuilder();
|
||||
x509.IssuerName = "CN=Vocaluxe Server";
|
||||
x509.NotAfter = DateTime.Today.AddYears(20);
|
||||
x509.NotBefore = DateTime.Today.AddDays(-1);
|
||||
x509.SubjectName = subject;
|
||||
x509.SerialNumber = new byte[] { 1 };
|
||||
x509.Version = 3;
|
||||
x509.SubjectPublicKey = rsa;
|
||||
|
||||
ExtendedKeyUsageExtension eku = new ExtendedKeyUsageExtension();
|
||||
eku.KeyPurpose.Add("1.3.6.1.5.5.7.3.1");
|
||||
x509.Extensions.Add(eku);
|
||||
|
||||
return new X509Certificate2(x509.Sign(rsa));
|
||||
}*/
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user