Skip to content

Instantly share code, notes, and snippets.

@MidLevel-Bot
Created August 12, 2020 00:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MidLevel-Bot/a40e1c7c7fa7ed68978ceb62b3f26678 to your computer and use it in GitHub Desktop.
Save MidLevel-Bot/a40e1c7c7fa7ed68978ceb62b3f26678 to your computer and use it in GitHub Desktop.
http://cert.midlevel.io/ Generated on 12/08/2020 00:35:36 by ::ffff:18.207.98.97

ONLY USE SELF SIGNED CERTIFICATES INTERNALLY OR FOR TESTING. USE A SERVICE LIKE LETSENCRYPT FOR REAL CERTIFICATES. THIS PROGRAM WILL GENERATE A CERTIFICATE AUTHORITY KEY PAIR AND A CERTIFICATE SIGNED BY THAT AUTHORITY. CERTIFICATES ARE ONLY VALID FOR 30 DAYS. AFTER THAT TIME YOU NEED A NEW ISSUER AND CERTIFICATE.

Quickstart Instructions (Basic Usage)

Server Instructions

ONLY DO THIS STEP ON THE SERVER. IT SHOULD NOT BE DONE ON CLIENTS. THIS STRING CONTAINS A BASE64 ENCODED PFX FILE, WHICH IS A COMBINATION OF THE CERTIFICATE AND THE PRIVATE KEY FOR THE CERTIFICATE WHICH IS USED TO SIGN KEY EXCHANGES.

In the NetworkingManager.NetworkConfig ServerBase64PfxCertificate text field. Enter the following:

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

Client instructions

To make clients trust your certificate issuer. Please do the following before connecting:

CryptographyHelper.OnValidateCertificateCallback = (certificate, hostname) =>
{
  X509Certificate2 issuerCertificate = new X509Certificate2(Convert.FromBase64String("MIIC5zCCAc+gAwIBAgIJAMvoCmZbMDb2MA0GCSqGSIb3DQEBCwUAMBkxFzAVBgNVBAMTDlVubmFtZWQgSXNzdWVyMB4XDTIwMDgxMjAwMzUzNloXDTIwMDkxMTAwMzUzNlowGTEXMBUGA1UEAxMOVW5uYW1lZCBJc3N1ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/X0mluvKhAzoSRzn2YsrCJOrW9bMlYoQkfVUyVxoMWcUqtCk9kE1TrAj9C+03WwE8+8y9pL0VwOUJ9ue3z3FUrzNL4daGE/CRBCy9JrMpZHVw5tpQ8q6PfFl4dUg/z06rVtx72EwMJYRxYKNYSCD3TZcyREkeDG4B0d2agA+q1G9C4jCenKNd72omG9ohPRSmAGwue0Q4UUJxE/a3SCZxQbEnfsA+jdA5OmF0a++JSL48AQOQIaQlECX8nr5Mjo5fzncwmc0s6IaVBqEImHdFAHsSLnoBwH00SP4Ug9SFKgdjQW5xCdV/ITQHNzkObNij6x0/UzhCGv6hqNzWE75jAgMBAAGjMjAwMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHxvPghleLgDNPm8+akWknU3eRGAMA0GCSqGSIb3DQEBCwUAA4IBAQCzDYNcbNtTQwwkjurJoMwIqrvxiEDgveVmUoaUGNzbeLq+vrrg3KoH6okbT3bUDU6LDJBkC1L0TXjTv5976VUvE2rTS1uHOCT8zA7OCxFbOCNCJ9YCGAtbskuEzHnaXgtCgrUrNT/0hgoxtX2Sw3cz8yIs7AfqYPt7L22tgjprKA8+HD0DDoNwBDx8iWczIV6pjXKqinTYCbUc5WTSf+ZTizo/3rfrGh7ZqcA7s2zl21S0afx5vJPl3niKH3x1o8189a++FfggkBuRaU2o/fhT9EU9OulrtOwdonPFzWs7fFyL0jgf3y4JDSx4lFyIqOTYccPJOFuGLuNh7KivI6rA"));
  X509Chain verify = new X509Chain();
  verify.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;
  verify.ChainPolicy.ExtraStore.Add(issuerCertificate);
  verify.ChainPolicy.VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority;

  // Check if the chain accepts it. This can mean that it's from a CA we trust OR our own CA.
  bool isAcceptedByChain = verify.Build(new X509Certificate2(certificate));

  if (isAcceptedByChain)
  {
    // Validate with the last added CA, that's our CA
    return verify.ChainElements[verify.ChainElements.Count - 1].Certificate.Thumbprint == issuerCertificate.Thumbprint;
  }

  return false;
}

Details (Advanced Users Only)

Property Value
Issuer Name CN=Unnamed Issuer
Issuer Key Type RSA
Issuer Key Size 2048
Issuer Validity Start 12/08/2020 01:35:36 (UTC)
Issuer Validity End 11/09/2020 01:35:36 (UTC)
Issuer Serial Number 00CBE80A665B3036F6
Issuer Thumbprint A3E59E97D15D20EAE42BD72A826AEDB41AE2D875
Certificate Name CN=Unnamed MLAPI Development Certificate
Certificate Serial Number 55D0517B921B840FC6A6FF8D7DFD6F41
Certificate Thumbprint 629C9098025FEDFB30741702A0DFEF583993CD09
Certificate Key Type RSA
Certificate Key Size 2048
Certificate Validity Start 12/08/2020 01:35:36 (UTC)
Certificate Validity End 11/09/2020 01:35:36 (UTC)

Keys

These are the keys that were used

Issuer Public/Private Key

<?xml version="1.0" encoding="utf-16"?>
<RSAParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <D>FvUhaqZQsQwoDUVKKMqVNFElcwAqq5Nz8sSuUcmtMEocoxDV2bLT8/OxaFnj7T4Xme9DEoUOwetQDq/2AFD8cYJLDxFaoN8Hfv4XN+HKoG6SwCaRjiBu3Hu4aAD5193QvDFBZgH+rX5asxc6wT515fUC7F7QvrATCljY0s4GEyIPpRxq/TDLZKVkAEazkf/wxDnRIN+iF5eSVQeBIEhtqqkUmqm4bTdn6kwBxGDNCKh9nwQx3X8tE+jxixs4kc+Eslt6p9zD0pUgNp2JxB3f6IgpHLVa/ZNT5VWI/9MPdf9nCWgpFfERnSrvAtN15BglFVcFjq9rKqLB5zEUst9FgQ==</D>
  <DP>b3xQXVJvqjz3YcLAsMxzl5mxyyaknvu4x4wfyXogIyW0JxVRWZBNgaBFltGmRHLJh8Z4wZ/iOEIk2uPkD8b7DJ6nXUQ6Y6GtaGgEtJgjGXat6N5IzsdFffgvg5cVS2fJhIewFMtcUQEO8JiX9Pm7R+jVgqA1VJm1ll1D/hAz2kE=</DP>
  <DQ>PNsYWbjzwHxpd1mRKiLtpI3RIx2XVppjN7T36t9ATWQxK/Rg+AuPy3kU+g3LGa+6dxhrENExb+MA2ml1G3t6m7TWK3sLz/WNnP2vEKOKQ1dVz3wTQWXH9H3IF5qhskafAEtIVIjxmk93Bd4SEoc9do3cX6l48usjYeHSQhUnEO8=</DQ>
  <Exponent>AQAB</Exponent>
  <InverseQ>JLx9ggzGkOl2oF0NC3rgkDE9TyZHdRs8YGRCGkwJu7CQ75zSe/IqQHiKU5IFLe3A5zXy09PQVi4McHZGG3k908or6ytr2xykyCyluU+iGZ+p8FSODXvOrRGawaOzFs/wQy99exupQ45BY/tUUQOjIEeAAaJFoYKiyk7KjtFI2i0=</InverseQ>
  <Modulus>v19JpbryoQM6Ekc59mLKwiTq1vWzJWKEJH1VMlcaDFnFKrQpPZBNU6wI/QvtN1sBPPvMvaS9FcDlCfbnt89xVK8zS+HWhhPwkQQsvSazKWR1cObaUPKuj3xZeHVIP89Oq1bce9hMDCWEcWCjWEgg902XMkRJHgxuAdHdmoAPqtRvQuIwnpyjXe9qJhvaIT0UpgBsLntEOFFCcRP2t0gmcUGxJ37APo3QOTphdGvviUi+PAEDkCGkJRAl/J6+TI6OX853MJnNLOiGlQahCJh3RQB7Ei56AcB9NEj+FIPUhSoHY0FucQnVfyE0Bzc5DmzYo+sdP1M4Qhr+oajc1hO+Yw==</Modulus>
  <P>8HQyBjDONt5UrTwOhVNkraphd3xvMGmc6qipWslNVbJzdj910lnNTFP5HhqzB9gVHhxYkE7BROb0ISq0oLS4xbJsT21EursTcgj5NvRaqm88zq6cx7SMb+5R9LLiuBO43M+P0VI4SBhl7AMa44VnDP4Bv3Ifrz9SyLS3wkwk0iE=</P>
  <Q>y767GmvcFKpMw6IAs8vXqTU8cfhrtlDETPPslx4OKKBeX0Dq7+HDBKd0lAabOlnzqkyItNg7wQXG652YdiCXYRHtndpnpHj3DHru2+0MgDyXiAWUs7Q32KHOtuQRzD3mvtYlUmuovAWdYkTDSYB9hOAxjxwIsFf3Rv1SJB0MSAM=</Q>
</RSAParameters>

Certificate Public/Private Key

<?xml version="1.0" encoding="utf-16"?>
<RSAParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <D>QEVYU4UFY9s9Gxtk/30JxT8wlSSrSCzPhc+A+fUAZFHXrK+f3T6CCGvt2ohgVDtD8bOiOY5VCQqkc1Y5pvwrhBbp4EqDUH5XtUZ3ghf2dJ55UJ+mFfg6dqQNw2JjVuEDTHl4vYg0udRANaY3NRC1y26bEHMJyVZ4xnH185f8xRlDmbYAV2KV1q5xFKrjngOQJ341s8w36Co0BUHPl5Csx1Ns06vH0SN2i67BbIO2EMHNcrN6EMVTpEBOg5Dgs7QI2qysClHnFMttlVzFN9Ovx01S+2q2Uo6pnFyeMK9JCoy+YGl9HqWaL1c48bw/uPG9q2fe06QXHII2Mzi6H5XXwQ==</D>
  <DP>Q+WqDKVmrc0hU60fnLe3a8K9pM2d61HhTuyDJEGY2PxxN1L1UAbFevXi2bNaaKX9rAxKv8DRSoF4ZBoY+Mwo0daqtn4iWinAlIKtKDaoiCI1Vl5tnJbAHsVOBKq4UkDpAtrhoXri1QFhPLwJyCyeJiaEZUh/gG5UUUEY2yRXEBs=</DP>
  <DQ>EHbEgxpz8MZ1FYu0SxreQBPOHrOqPBr3WH9X1375MUFUWTfhGVNs+kOgQL5h9xmxrK9M7whjhfSiEq77TZhgRSP/pksfM0D8Wfw7TY/bTeqnzP2O9i9WQPGCgufJBbIj6a/XLh9SIiQYztU9T/CUM37yB8hIB5zE7quhV4/+OWE=</DQ>
  <Exponent>AQAB</Exponent>
  <InverseQ>ruWPg2slR9d2RPQS12jeGLaDezoQRvK2rVw5nSqhTKFHe5ze+83EYS5riTO4xgvDmNZywOENRjSVOoJBBCHCShhfYKT3YnjWlx/aJ/PaxcxXsyL29NktgzRg5kX4knU+WBgQoW5F4rsiaQZ6wFXXIuLo2rPK+qVm25Z8cG2hDsw=</InverseQ>
  <Modulus>t3yYHqj7U3eDWXFZBfSYOY3IHG289wj2cE9MP/Gpp8rIoE9ctAQYhZ68wo5q7hA9KsYCjk2C6i785kqjf5i3yLbdxwqF2tDxGNNm01eotd+XnABugoBiTSdZEvWueO8Ha95V0BpBD0+leAUjrXnak4Uipi9O9W5WPFbauc9h4UuI/s9sm8ekpPs0rvtyRP5ATuiSXCgyHYDqM5B/P+CRlOop1QBnLuJQHrXvEGd3tJo0ETciv8LRLF5MVJuo0o105ao4oxQfDmLe3s+VXQm9ZUNyqjfZwr3n7V66C+T98p8Xzc9mU8awZn5OjK/b0YuQcKB9DoAA8q9YGTZpDX0Eew==</Modulus>
  <P>8NPmCjepCNnKHW80aVg3lEsAyI4+/4MlmZS1EZCJlr9CElGdefef7N8JQ2hfKBaWk84pGEET7ZVUFJhrqo7B3CnnxQtqF6NgFqgVw8iI3wyPKJQG+CYxwsCt76Iv7J62olol1E7sOjG3H7tegiHdwsws/5xPUbqKhGQQEz9VlsM=</P>
  <Q>wwvkUiN+8jpk4d1JD7HyzwrWd6kLR+BSWMomcrXOCELlpd1Oua83PUwxz3B7512DiNZtIn2ejuh+NbqteE2lLwdw1b0/C6uS7PYQX0pEYsBnRamNx0d4hCdm8ACNTbSNOhyL2FF1PTAUIHzz1nBdez2GgylFCgha3E0BEsHjL+k=</Q>
</RSAParameters>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment