Commit a6f402f7 authored by justcoding121's avatar justcoding121

prevent certificates getting piled up in user\personal store with WinCert Maker

parent 5d5b32e9
...@@ -274,7 +274,15 @@ namespace Titanium.Web.Proxy.Network ...@@ -274,7 +274,15 @@ namespace Titanium.Web.Proxy.Network
CreateRootCertificate(); CreateRootCertificate();
} }
return certEngine.MakeCertificate(certificateName, isRootCertificate, RootCertificate); var certificate = certEngine.MakeCertificate(certificateName, isRootCertificate, RootCertificate);
if (CertificateEngine == CertificateEngine.DefaultWindows)
{
//prevent certificates getting piled up in User\Personal store
Task.Run(() => UninstallCertificate(StoreName.My, StoreLocation.CurrentUser, certificate));
}
return certificate;
} }
/// <summary> /// <summary>
...@@ -282,7 +290,7 @@ namespace Titanium.Web.Proxy.Network ...@@ -282,7 +290,7 @@ namespace Titanium.Web.Proxy.Network
/// </summary> /// </summary>
/// <param name="storeLocation"></param> /// <param name="storeLocation"></param>
/// <returns></returns> /// <returns></returns>
private void TrustRootCertificate(StoreName storeName, StoreLocation storeLocation) private void InstallCertificate(StoreName storeName, StoreLocation storeLocation)
{ {
if (RootCertificate == null) if (RootCertificate == null)
{ {
...@@ -320,7 +328,7 @@ namespace Titanium.Web.Proxy.Network ...@@ -320,7 +328,7 @@ namespace Titanium.Web.Proxy.Network
/// </summary> /// </summary>
/// <param name="storeLocation"></param> /// <param name="storeLocation"></param>
/// <returns></returns> /// <returns></returns>
private void RemoveTrustedRootCertificate(StoreName storeName, StoreLocation storeLocation) private void UninstallCertificate(StoreName storeName, StoreLocation storeLocation, X509Certificate2 certificate)
{ {
if (RootCertificate == null) if (RootCertificate == null)
{ {
...@@ -337,7 +345,7 @@ namespace Titanium.Web.Proxy.Network ...@@ -337,7 +345,7 @@ namespace Titanium.Web.Proxy.Network
{ {
x509Store.Open(OpenFlags.ReadWrite); x509Store.Open(OpenFlags.ReadWrite);
x509Store.Remove(RootCertificate); x509Store.Remove(certificate);
} }
catch (Exception e) catch (Exception e)
{ {
...@@ -624,13 +632,13 @@ namespace Titanium.Web.Proxy.Network ...@@ -624,13 +632,13 @@ namespace Titanium.Web.Proxy.Network
public void TrustRootCertificate() public void TrustRootCertificate()
{ {
//current user //current user
TrustRootCertificate(StoreName.My, StoreLocation.CurrentUser); InstallCertificate(StoreName.My, StoreLocation.CurrentUser);
//current system //current system
TrustRootCertificate(StoreName.My, StoreLocation.LocalMachine); InstallCertificate(StoreName.My, StoreLocation.LocalMachine);
//this adds to both currentUser\Root & currentMachine\Root //this adds to both currentUser\Root & currentMachine\Root
TrustRootCertificate(StoreName.Root, StoreLocation.LocalMachine); InstallCertificate(StoreName.Root, StoreLocation.LocalMachine);
} }
/// <summary> /// <summary>
...@@ -649,7 +657,7 @@ namespace Titanium.Web.Proxy.Network ...@@ -649,7 +657,7 @@ namespace Titanium.Web.Proxy.Network
File.WriteAllBytes(pfxFileName, RootCertificate.Export(X509ContentType.Pkcs12, PfxPassword)); File.WriteAllBytes(pfxFileName, RootCertificate.Export(X509ContentType.Pkcs12, PfxPassword));
//currentUser\Personal //currentUser\Personal
TrustRootCertificate(StoreName.My, StoreLocation.CurrentUser); InstallCertificate(StoreName.My, StoreLocation.CurrentUser);
//currentUser\Root, currentMachine\Personal & currentMachine\Root //currentUser\Root, currentMachine\Personal & currentMachine\Root
var info = new ProcessStartInfo() var info = new ProcessStartInfo()
...@@ -689,13 +697,13 @@ namespace Titanium.Web.Proxy.Network ...@@ -689,13 +697,13 @@ namespace Titanium.Web.Proxy.Network
public void RemoveTrustedRootCertificate() public void RemoveTrustedRootCertificate()
{ {
//current user //current user
RemoveTrustedRootCertificate(StoreName.My, StoreLocation.CurrentUser); UninstallCertificate(StoreName.My, StoreLocation.CurrentUser, RootCertificate);
//current system //current system
RemoveTrustedRootCertificate(StoreName.My, StoreLocation.LocalMachine); UninstallCertificate(StoreName.My, StoreLocation.LocalMachine, RootCertificate);
//this removes from both currentUser\Root & currentMachine\Root //this removes from both currentUser\Root & currentMachine\Root
RemoveTrustedRootCertificate(StoreName.Root, StoreLocation.LocalMachine); UninstallCertificate(StoreName.Root, StoreLocation.LocalMachine, RootCertificate);
} }
/// <summary> /// <summary>
...@@ -711,7 +719,7 @@ namespace Titanium.Web.Proxy.Network ...@@ -711,7 +719,7 @@ namespace Titanium.Web.Proxy.Network
} }
//currentUser\Personal //currentUser\Personal
RemoveTrustedRootCertificate(StoreName.My, StoreLocation.CurrentUser); UninstallCertificate(StoreName.My, StoreLocation.CurrentUser, RootCertificate);
var infos = new List<ProcessStartInfo>() var infos = new List<ProcessStartInfo>()
{ {
...@@ -776,8 +784,6 @@ namespace Titanium.Web.Proxy.Network ...@@ -776,8 +784,6 @@ namespace Titanium.Web.Proxy.Network
return FindRootCertificate(StoreLocation.LocalMachine); return FindRootCertificate(StoreLocation.LocalMachine);
} }
/// <summary> /// <summary>
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
/// </summary> /// </summary>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment