예제 #1
0
        public void X509_NoPrivateKey()
        {
            // Verify that we can load a certificate generated by
            // Kubernetes without a private key.

            var certPem =
                @"-----BEGIN CERTIFICATE-----
MIIC8jCCAdqgAwIBAgIIdaABVSybOjowDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE
AxMKa3ViZXJuZXRlczAeFw0xOTAyMTQyMzQ2MDVaFw0yMDAyMTQyMzQ2MDdaMDQx
FzAVBgNVBAoTDnN5c3RlbTptYXN0ZXJzMRkwFwYDVQQDExBrdWJlcm5ldGVzLWFk
bWluMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzjgtmL1scH9zwMkF
syXmhuhchLDgkZ+CuEIwmACE6AwlHZ6XfEXaRnLUuwmv87S2epj9rwJ1Sp/EchYV
Q6YjOODYfkJXSxCTiiNwBCzGrTDqKa8JBj1Zy9jkC+ZoKoErJFRKlw5ePtxsdUZE
QozQpIFvjACrTcmJtJiaGnY2C/f6Csrf4OXT2ulSYq+AS3bY4cfrcXGdsUTG5ATS
DblHvntjqLi8loEEj2kjDbK82chAkcgPadQ28/P6cqwKnxHAgWeleCSxxNvHE8+O
vJiqrxh7TBUQiFWWSbgAVED8JiN++E779P/MgQCeGYPD3OgrW97T1U7ciQWZ38XB
KqZFKwIDAQABoycwJTAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUH
AwIwDQYJKoZIhvcNAQELBQADggEBAL9sKWHOj1cia9i+QZDg4UIFY3STEyH/FJXn
NknAH5u0ioW4y+OIjFMQDqNjTiIjVm2qnEf1K+MYgsb88OObUo84edVNvu8Fq2Fl
o/K3+OwMXjYjzlLIh+pUQp7KXiyt2TdCh06l/ApjPgAnVa2uIB+/SGndDB8VNXhb
i2YHnN60aOPJkq6ow00Y0s6ncjYtmeiUs8B6wZljGcbOEopXAiS9sDIYz1p4a0AB
5vbzZ8mh4fM+zQ5owUopVvBF4Mv8yJEHgJ/zoxwGT/7kmcmZ/27ix0v7kFvrhKaU
NOrsafukaeMnu7sKsM5jeCimps8GlBJUM6bVrlbAgUuPl5B0oWg=
-----END CERTIFICATE-----
";
            var x509 = TlsCertificate.FromPemParts(certPem).ToX509();

            Assert.Equal("CN=kubernetes", x509.Issuer);
            Assert.Equal("43EE9CFF1FBFBCCEA1A73C7F941F7921E2B688EF", x509.Thumbprint);
            Assert.Equal(new DateTime(2019, 2, 14, 15, 46, 05), x509.NotBefore);
            Assert.Equal(new DateTime(2020, 2, 14, 15, 46, 07), x509.NotAfter);

            Assert.False(x509.HasPrivateKey);
        }
예제 #2
0
        public void X509_WithPrivateKey()
        {
            // $todo(jeff.lill):
            //
            // Enable this when we upgrade to .NET Standard 2.1
            //
            //      https://github.com/nforgeio/neonKUBE/issues/new

            // Verify that we can load a certificate generated by
            // Kubernetes without a private key.

            var certPem =
                @"-----BEGIN CERTIFICATE-----
MIIC8jCCAdqgAwIBAgIIdaABVSybOjowDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE
AxMKa3ViZXJuZXRlczAeFw0xOTAyMTQyMzQ2MDVaFw0yMDAyMTQyMzQ2MDdaMDQx
FzAVBgNVBAoTDnN5c3RlbTptYXN0ZXJzMRkwFwYDVQQDExBrdWJlcm5ldGVzLWFk
bWluMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzjgtmL1scH9zwMkF
syXmhuhchLDgkZ+CuEIwmACE6AwlHZ6XfEXaRnLUuwmv87S2epj9rwJ1Sp/EchYV
Q6YjOODYfkJXSxCTiiNwBCzGrTDqKa8JBj1Zy9jkC+ZoKoErJFRKlw5ePtxsdUZE
QozQpIFvjACrTcmJtJiaGnY2C/f6Csrf4OXT2ulSYq+AS3bY4cfrcXGdsUTG5ATS
DblHvntjqLi8loEEj2kjDbK82chAkcgPadQ28/P6cqwKnxHAgWeleCSxxNvHE8+O
vJiqrxh7TBUQiFWWSbgAVED8JiN++E779P/MgQCeGYPD3OgrW97T1U7ciQWZ38XB
KqZFKwIDAQABoycwJTAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUH
AwIwDQYJKoZIhvcNAQELBQADggEBAL9sKWHOj1cia9i+QZDg4UIFY3STEyH/FJXn
NknAH5u0ioW4y+OIjFMQDqNjTiIjVm2qnEf1K+MYgsb88OObUo84edVNvu8Fq2Fl
o/K3+OwMXjYjzlLIh+pUQp7KXiyt2TdCh06l/ApjPgAnVa2uIB+/SGndDB8VNXhb
i2YHnN60aOPJkq6ow00Y0s6ncjYtmeiUs8B6wZljGcbOEopXAiS9sDIYz1p4a0AB
5vbzZ8mh4fM+zQ5owUopVvBF4Mv8yJEHgJ/zoxwGT/7kmcmZ/27ix0v7kFvrhKaU
NOrsafukaeMnu7sKsM5jeCimps8GlBJUM6bVrlbAgUuPl5B0oWg=
-----END CERTIFICATE-----
";
            var keyPem =
                @"-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAzjgtmL1scH9zwMkFsyXmhuhchLDgkZ+CuEIwmACE6AwlHZ6X
fEXaRnLUuwmv87S2epj9rwJ1Sp/EchYVQ6YjOODYfkJXSxCTiiNwBCzGrTDqKa8J
Bj1Zy9jkC+ZoKoErJFRKlw5ePtxsdUZEQozQpIFvjACrTcmJtJiaGnY2C/f6Csrf
4OXT2ulSYq+AS3bY4cfrcXGdsUTG5ATSDblHvntjqLi8loEEj2kjDbK82chAkcgP
adQ28/P6cqwKnxHAgWeleCSxxNvHE8+OvJiqrxh7TBUQiFWWSbgAVED8JiN++E77
9P/MgQCeGYPD3OgrW97T1U7ciQWZ38XBKqZFKwIDAQABAoIBAErAOmb/Yut0h7T+
KT7DIkkMuVyv8PdYZr374Dl5FrQ2ks2lyyuU9oZK4ana3RjuDKdsBakGrxWZzE++
iX64HlRjzJYX3iSroY+VQOmCgZIOBROPCypj2sT1ndRidKfTopvMoi0XXDpVFEt+
aQfmm0rGUHTjWTUdNPltx46IAxda6Yd378hXAUmTQSQ2FoVcmHuQn4Sr/0Qehf8W
ZeyEzhD1s6w2KhAWZKtadvmeBV/rBpaK/iH+B9bKH+7afSJU6otSuNidE+u6m8gY
6Q4JSHa7v+vR3hLBlbIMoBd21vXNCpoTpgt7+kbE1j224aZ/TAYww5E4nHC16KBZ
c/HE/+ECgYEA47c5WhRq8B+yh/Bqj2AzGxYqSBtPmzIpFktpyDbRkxrVBELOb/Es
52D0KLoAc0rs4XtcxU94ayCUGBQbW7ITiIb19wqGhS+9ATifPyjB/1N9E4beEutO
y2sbsuTqjDsnGx+s1XDZqbx6K/cvGGSAEbNxEXJ0GSOLUMUaTQFwX2cCgYEA59Vt
froASB3KAgOroXCC6c3CVIbYu2pP9Am1aGFUITOUZB54elsY1is7wKbVxgYqvmAn
kHuO8SVLuZTk9BmrtNnBxLh4aJNpb5L7BVGwwNLrSxEwgSmudzT3v31QrZgYXFsA
YF9QymqIHbUMN6HzFht3nITGs5sTKgtYWCazRZ0CgYBL5kJDeBK8vpPvI38hEtt1
58loB1JdVDbFq5UymrL36TWfGfVc8nIZHQPEn1qPEyYpccjWK0rjyhQSgoEr6wr/
spxBH0z/D45b3deWYatnwxgpbgaPH8c/ng+5bPuQihbav5AIBHlITf4asWUNKFJX
lAvX2OJBjstcvJWrnRMreQKBgGDJwSH0Q6PYE/tNTv1ifLVh+uzRM3DjTKgE2aDP
aZFG+H/oHMJwf+kCObsPrBY1gujiOgJfI2lX+cpr+D5U7VPeyb/4iASY7p7vTS+G
UHXgWO2JKqfyH+2SxpBCoEkpQ5pjP7/8az1mxpcofAZJ7bPgGcrVwCNB7flSrTp4
RcYdAoGAM713rdsR/0NsbN16e8hnaDphmtwAeG2PuRhIeG4VfXG/bjZ8sUEu8Jwb
v/diFRFasFCXhaZGcKluXqYGb4V3CRwDQRBTTbdmnIiUFuP1rY6o02vcZcW7wy5T
UUHWzDpotXDXwAwuIxh71LVCBnQRPryVc6Ynx3YF8HD8in600zw=
-----END RSA PRIVATE KEY-----
";
            var x509 = TlsCertificate.FromPemParts(certPem, keyPem).ToX509();

            Assert.Equal("CN=kubernetes", x509.Issuer);
            Assert.Equal("43EE9CFF1FBFBCCEA1A73C7F941F7921E2B688EF", x509.Thumbprint);
            Assert.Equal(new DateTime(2019, 2, 14, 15, 46, 05), x509.NotBefore);
            Assert.Equal(new DateTime(2020, 2, 14, 15, 46, 07), x509.NotAfter);
            Assert.True(x509.HasPrivateKey);
        }