Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
T
Titanium-Web-Proxy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Titanium-Web-Proxy
Commits
5026d40a
Commit
5026d40a
authored
Oct 03, 2016
by
Hakan Arıcı
Committed by
GitHub
Oct 03, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2 from justcoding121/release
Sync
parents
c02c9f3a
63ddeff4
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
15 deletions
+50
-15
CertificateManagerTests.cs
...s/Titanium.Web.Proxy.UnitTests/CertificateManagerTests.cs
+3
-3
CertificateManager.cs
Titanium.Web.Proxy/Network/CertificateManager.cs
+47
-12
No files found.
Tests/Titanium.Web.Proxy.UnitTests/CertificateManagerTests.cs
View file @
5026d40a
...
@@ -20,7 +20,7 @@ namespace Titanium.Web.Proxy.UnitTests
...
@@ -20,7 +20,7 @@ namespace Titanium.Web.Proxy.UnitTests
{
{
var
tasks
=
new
List
<
Task
>();
var
tasks
=
new
List
<
Task
>();
var
mgr
=
new
CertificateManager
(
"Titanium"
,
"Titanium Root Certificate Authority"
);
var
mgr
=
new
CertificateManager
(
"Titanium"
,
"Titanium Root Certificate Authority"
);
mgr
.
ClearIdleCertificates
(
1
);
mgr
.
ClearIdleCertificates
(
1
);
...
@@ -33,9 +33,9 @@ namespace Titanium.Web.Proxy.UnitTests
...
@@ -33,9 +33,9 @@ namespace Titanium.Web.Proxy.UnitTests
await
Task
.
Delay
(
random
.
Next
(
0
,
10
)
*
1000
);
await
Task
.
Delay
(
random
.
Next
(
0
,
10
)
*
1000
);
//get the connection
//get the connection
var
certificate
=
await
mgr
.
CreateCertificate
(
host
,
false
);
var
certificate
=
mgr
.
CreateCertificate
(
host
,
false
);
Assert
.
IsNotNull
(
certificate
);
Assert
.
IsNotNull
(
certificate
);
}));
}));
...
...
Titanium.Web.Proxy/Network/CertificateManager.cs
View file @
5026d40a
...
@@ -37,29 +37,37 @@ namespace Titanium.Web.Proxy.Network
...
@@ -37,29 +37,37 @@ namespace Titanium.Web.Proxy.Network
certificateCache
=
new
ConcurrentDictionary
<
string
,
CachedCertificate
>();
certificateCache
=
new
ConcurrentDictionary
<
string
,
CachedCertificate
>();
}
}
/// <summary>
X509Certificate2
GetRootCertificate
()
/// Attempts to move a self-signed certificate to the root store.
/// </summary>
/// <returns>true if succeeded, else false</returns>
internal
bool
CreateTrustedRootCertificate
()
{
{
var
fileName
=
Path
.
Combine
(
System
.
IO
.
Path
.
GetDirectoryName
(
System
.
Reflection
.
Assembly
.
GetEntryAssembly
().
Location
),
"rootCert.pfx"
);
var
fileName
=
Path
.
Combine
(
System
.
IO
.
Path
.
GetDirectoryName
(
System
.
Reflection
.
Assembly
.
GetEntryAssembly
().
Location
),
"rootCert.pfx"
);
if
(
File
.
Exists
(
fileName
))
if
(
File
.
Exists
(
fileName
))
{
{
try
try
{
{
rootCertificate
=
new
X509Certificate2
(
fileName
,
string
.
Empty
,
X509KeyStorageFlags
.
Exportable
);
return
new
X509Certificate2
(
fileName
,
string
.
Empty
,
X509KeyStorageFlags
.
Exportable
);
if
(
rootCertificate
!=
null
)
{
return
true
;
}
}
}
catch
(
Exception
e
)
catch
(
Exception
e
)
{
{
ProxyServer
.
ExceptionFunc
(
e
);
ProxyServer
.
ExceptionFunc
(
e
);
return
null
;
}
}
}
}
return
null
;
}
/// <summary>
/// Attempts to create a RootCertificate
/// </summary>
/// <returns>true if succeeded, else false</returns>
internal
bool
CreateTrustedRootCertificate
()
{
rootCertificate
=
GetRootCertificate
();
if
(
rootCertificate
!=
null
)
{
return
true
;
}
try
try
{
{
rootCertificate
=
CreateCertificate
(
RootCertificateName
,
true
);
rootCertificate
=
CreateCertificate
(
RootCertificateName
,
true
);
...
@@ -72,6 +80,7 @@ namespace Titanium.Web.Proxy.Network
...
@@ -72,6 +80,7 @@ namespace Titanium.Web.Proxy.Network
{
{
try
try
{
{
var
fileName
=
Path
.
Combine
(
System
.
IO
.
Path
.
GetDirectoryName
(
System
.
Reflection
.
Assembly
.
GetEntryAssembly
().
Location
),
"rootCert.pfx"
);
File
.
WriteAllBytes
(
fileName
,
rootCertificate
.
Export
(
X509ContentType
.
Pkcs12
));
File
.
WriteAllBytes
(
fileName
,
rootCertificate
.
Export
(
X509ContentType
.
Pkcs12
));
}
}
catch
(
Exception
e
)
catch
(
Exception
e
)
...
@@ -177,6 +186,32 @@ namespace Titanium.Web.Proxy.Network
...
@@ -177,6 +186,32 @@ namespace Titanium.Web.Proxy.Network
await
Task
.
Delay
(
1000
*
60
);
await
Task
.
Delay
(
1000
*
60
);
}
}
}
}
public
bool
TrustRootCertificate
()
{
if
(
rootCertificate
==
null
)
{
return
false
;
}
try
{
X509Store
x509Store
=
new
X509Store
(
StoreName
.
Root
,
StoreLocation
.
CurrentUser
);
x509Store
.
Open
(
OpenFlags
.
ReadWrite
);
try
{
x509Store
.
Add
(
rootCertificate
);
}
finally
{
x509Store
.
Close
();
}
return
true
;
}
catch
(
Exception
exception
)
{
return
false
;
}
}
public
void
Dispose
()
public
void
Dispose
()
{
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment