-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
83 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
# <return>explication</return> SSL/TLS | ||
|
||
## Client | ||
For use/enable ``SSL/TLS`` on ``Netly`` with ``TcpClient`` instance use code bellow. | ||
|
||
<return>Warning</return> When you enable ``SSL/TLS`` and your server not use ``SSL/TLS`` you connection will be closed. | ||
|
||
- Default config | ||
```cs | ||
using Netly; | ||
|
||
TcpClient client = new TcpClient(framing: true); | ||
|
||
// Enable SSL/TLS connection. | ||
client.UseEncryption(true); | ||
``` | ||
|
||
- Custom validatiion | ||
```cs | ||
using Netly; | ||
|
||
TcpClient client = new TcpClient(framing: true); | ||
|
||
// Enable SSL/TLS connection. | ||
client.UseEncryption(true, Validator); | ||
|
||
bool Validator(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) | ||
{ | ||
|
||
#if false | ||
// Default behaviour | ||
return true; | ||
#endif | ||
|
||
// Custom validation | ||
// Source: https://learn.microsoft.com/dotnet/api/system.net.security.sslstream | ||
|
||
if (sslPolicyErrors == SslPolicyErrors.None) { | ||
// Valid server | ||
return true; | ||
} | ||
|
||
Console.WriteLine("Certificate error: {0}", sslPolicyErrors); | ||
|
||
// refuse connection | ||
return false; | ||
|
||
} | ||
``` | ||
|
||
## Server | ||
For use/enable ``SSL/TLS`` on ``Netly`` with ``TcpServer`` instance use code bellow. | ||
|
||
<return>Warning</return> When you enable ``SSL/TLS`` and your client not use ``SSL/TLS`` you client connection will be closed. | ||
|
||
|
||
```cs | ||
// Warning: See about generate pfx on SSL/TLS page now we will see about startup this! | ||
// Warning: Convert pfx file for bytes only using UTF8 for prevent erros | ||
byte[] pfx = <class>.<method-get-fpx-buffer>(); | ||
string pfxPassword = <class>.<method-get-pfx-password>(); | ||
|
||
// Enable SSL/TLS | ||
TcpServer.UseEncryption(pfx, pfxPassword, SslProtocols.Tls12); // TLS v1.2 | ||
// If password or PFX buffer is invalid you will receive error message on <TcpServer.OnError(Actiion<Exception> callback)> | ||
``` | ||
|
||
## Create PFX (PKCS #12) | ||
* Requirement ``OpenSSL`` | ||
- linux: Use package manager | ||
- Ubuntu: ``sudo apt install openssl`` or ``sudo apt install libssl-dev`` | ||
- Windows: | ||
- Download windows: https://wiki.openssl.org/index.php/Binaries | ||
- Add OpenSSL folder on ``path`` (``Environment Variables``) | ||
- Generate ``PFX (PKCS #12)``: https://www.ibm.com/docs/en/api-connect/10.0.x?topic=overview-generating-self-signed-certificate-using-openssl |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters