summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/base/cert_database_nss_unittest.cc16
-rw-r--r--net/base/test_root_certs_unittest.cc114
-rw-r--r--net/data/ssl/certificates/README48
-rw-r--r--net/data/ssl/certificates/expired_cert.pem110
-rw-r--r--net/data/ssl/certificates/ok_cert.pem110
-rw-r--r--net/data/ssl/certificates/openssl_ca.cnf72
-rw-r--r--net/data/ssl/certificates/openssl_cert.cnf23
-rw-r--r--net/data/ssl/certificates/root_ca_cert.crt35
-rw-r--r--net/data/ssl/certificates/root_ca_cert.pem72
-rw-r--r--net/net.gyp1
-rw-r--r--net/test/test_server.cc2
-rw-r--r--tools/python/google/httpd_config/httpd2.pem110
-rw-r--r--tools/python/google/httpd_config/root_ca_cert.crt35
-rw-r--r--tools/python/google/httpd_config/root_ca_cert.pem72
-rwxr-xr-xtools/valgrind/valgrind_test.py9
-rwxr-xr-xtools/wine_valgrind/chrome_tests.sh10
16 files changed, 623 insertions, 216 deletions
diff --git a/net/base/cert_database_nss_unittest.cc b/net/base/cert_database_nss_unittest.cc
index 8e69104..cd9f7a9 100644
--- a/net/base/cert_database_nss_unittest.cc
+++ b/net/base/cert_database_nss_unittest.cc
@@ -169,7 +169,7 @@ TEST_F(CertDatabaseNSSTest, ImportFromPKCS12AndExportAgain) {
}
TEST_F(CertDatabaseNSSTest, ImportCACert_SSLTrust) {
- std::string cert_data = ReadTestFile("root_ca_cert.crt");
+ std::string cert_data = ReadTestFile("root_ca_cert.pem");
CertificateList certs =
X509Certificate::CreateCertificateListFromBytes(
@@ -187,7 +187,7 @@ TEST_F(CertDatabaseNSSTest, ImportCACert_SSLTrust) {
CertificateList cert_list = ListCertsInSlot(slot_.get());
ASSERT_EQ(1U, cert_list.size());
scoped_refptr<X509Certificate> cert(cert_list[0]);
- EXPECT_EQ("Test CA", cert->subject().common_name);
+ EXPECT_EQ("Test Root CA", cert->subject().common_name);
EXPECT_EQ(CertDatabase::TRUSTED_SSL,
cert_db_.GetCertTrust(cert.get(), CA_CERT));
@@ -201,7 +201,7 @@ TEST_F(CertDatabaseNSSTest, ImportCACert_SSLTrust) {
}
TEST_F(CertDatabaseNSSTest, ImportCACert_EmailTrust) {
- std::string cert_data = ReadTestFile("root_ca_cert.crt");
+ std::string cert_data = ReadTestFile("root_ca_cert.pem");
CertificateList certs =
X509Certificate::CreateCertificateListFromBytes(
@@ -219,7 +219,7 @@ TEST_F(CertDatabaseNSSTest, ImportCACert_EmailTrust) {
CertificateList cert_list = ListCertsInSlot(slot_.get());
ASSERT_EQ(1U, cert_list.size());
scoped_refptr<X509Certificate> cert(cert_list[0]);
- EXPECT_EQ("Test CA", cert->subject().common_name);
+ EXPECT_EQ("Test Root CA", cert->subject().common_name);
EXPECT_EQ(CertDatabase::TRUSTED_EMAIL,
cert_db_.GetCertTrust(cert.get(), CA_CERT));
@@ -232,7 +232,7 @@ TEST_F(CertDatabaseNSSTest, ImportCACert_EmailTrust) {
}
TEST_F(CertDatabaseNSSTest, ImportCACert_ObjSignTrust) {
- std::string cert_data = ReadTestFile("root_ca_cert.crt");
+ std::string cert_data = ReadTestFile("root_ca_cert.pem");
CertificateList certs =
X509Certificate::CreateCertificateListFromBytes(
@@ -250,7 +250,7 @@ TEST_F(CertDatabaseNSSTest, ImportCACert_ObjSignTrust) {
CertificateList cert_list = ListCertsInSlot(slot_.get());
ASSERT_EQ(1U, cert_list.size());
scoped_refptr<X509Certificate> cert(cert_list[0]);
- EXPECT_EQ("Test CA", cert->subject().common_name);
+ EXPECT_EQ("Test Root CA", cert->subject().common_name);
EXPECT_EQ(CertDatabase::TRUSTED_OBJ_SIGN,
cert_db_.GetCertTrust(cert.get(), CA_CERT));
@@ -391,7 +391,7 @@ TEST_F(CertDatabaseNSSTest, ImportCACertHierarchyTree) {
}
TEST_F(CertDatabaseNSSTest, ImportCACertNotHierarchy) {
- std::string cert_data = ReadTestFile("root_ca_cert.crt");
+ std::string cert_data = ReadTestFile("root_ca_cert.pem");
CertificateList certs =
X509Certificate::CreateCertificateListFromBytes(
cert_data.data(), cert_data.size(), X509Certificate::FORMAT_AUTO);
@@ -415,7 +415,7 @@ TEST_F(CertDatabaseNSSTest, ImportCACertNotHierarchy) {
CertificateList cert_list = ListCertsInSlot(slot_.get());
ASSERT_EQ(1U, cert_list.size());
- EXPECT_EQ("Test CA", cert_list[0]->subject().common_name);
+ EXPECT_EQ("Test Root CA", cert_list[0]->subject().common_name);
}
TEST_F(CertDatabaseNSSTest, ImportServerCert) {
diff --git a/net/base/test_root_certs_unittest.cc b/net/base/test_root_certs_unittest.cc
new file mode 100644
index 0000000..5697e11
--- /dev/null
+++ b/net/base/test_root_certs_unittest.cc
@@ -0,0 +1,114 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/file_path.h"
+#include "build/build_config.h"
+#include "net/base/cert_status_flags.h"
+#include "net/base/cert_test_util.h"
+#include "net/base/cert_verify_result.h"
+#include "net/base/net_errors.h"
+#include "net/base/test_root_certs.h"
+#include "net/base/x509_certificate.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace net {
+
+namespace {
+
+// The local test root certificate.
+const char kRootCertificateFile[] = "root_ca_cert.pem";
+// A certificate issued by the local test root for 127.0.0.1.
+const char kGoodCertificateFile[] = "ok_cert.pem";
+
+} // namespace
+
+// Test basic functionality when adding from an existing X509Certificate.
+TEST(TestRootCertsTest, AddFromPointer) {
+ scoped_refptr<X509Certificate> root_cert =
+ ImportCertFromFile(GetTestCertsDirectory(), kRootCertificateFile);
+ ASSERT_NE(static_cast<X509Certificate*>(NULL), root_cert);
+
+ TestRootCerts* test_roots = TestRootCerts::GetInstance();
+ ASSERT_NE(static_cast<TestRootCerts*>(NULL), test_roots);
+ EXPECT_TRUE(test_roots->IsEmpty());
+
+ EXPECT_TRUE(test_roots->Add(root_cert));
+ EXPECT_FALSE(test_roots->IsEmpty());
+
+ test_roots->Clear();
+ EXPECT_TRUE(test_roots->IsEmpty());
+}
+
+// Test basic functionality when adding directly from a file, which should
+// behave the same as when adding from an existing certificate.
+TEST(TestRootCertsTest, AddFromFile) {
+ TestRootCerts* test_roots = TestRootCerts::GetInstance();
+ ASSERT_NE(static_cast<TestRootCerts*>(NULL), test_roots);
+ EXPECT_TRUE(test_roots->IsEmpty());
+
+ FilePath cert_path =
+ GetTestCertsDirectory().AppendASCII(kRootCertificateFile);
+ EXPECT_TRUE(test_roots->AddFromFile(cert_path));
+ EXPECT_FALSE(test_roots->IsEmpty());
+
+ test_roots->Clear();
+ EXPECT_TRUE(test_roots->IsEmpty());
+}
+
+// Test that TestRootCerts actually adds the appropriate trust status flags
+// when requested, and that the trusted status is cleared once the root is
+// removed the TestRootCerts. This test acts as a canary/sanity check for
+// the results of the rest of net_unittests, ensuring that the trust status
+// is properly being set and cleared.
+TEST(TestRootCertsTest, OverrideTrust) {
+ TestRootCerts* test_roots = TestRootCerts::GetInstance();
+ ASSERT_NE(static_cast<TestRootCerts*>(NULL), test_roots);
+ EXPECT_TRUE(test_roots->IsEmpty());
+
+ scoped_refptr<X509Certificate> test_cert =
+ ImportCertFromFile(GetTestCertsDirectory(), kGoodCertificateFile);
+ ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert);
+
+ // Test that the good certificate fails verification, because the root
+ // certificate should not yet be trusted.
+ int flags = 0;
+ CertVerifyResult bad_verify_result;
+ int bad_status = test_cert->Verify("127.0.0.1", flags, &bad_verify_result);
+ EXPECT_NE(OK, bad_status);
+ EXPECT_NE(0, bad_verify_result.cert_status &
+ CERT_STATUS_AUTHORITY_INVALID);
+
+ // Add the root certificate and mark it as trusted.
+ EXPECT_TRUE(test_roots->AddFromFile(
+ GetTestCertsDirectory().AppendASCII(kRootCertificateFile)));
+ EXPECT_FALSE(test_roots->IsEmpty());
+
+ // Test that the certificate verification now succeeds, because the
+ // TestRootCerts is successfully imbuing trust.
+ CertVerifyResult good_verify_result;
+ int good_status = test_cert->Verify("127.0.0.1", flags, &good_verify_result);
+ EXPECT_EQ(OK, good_status);
+ EXPECT_EQ(0, good_verify_result.cert_status);
+
+ test_roots->Clear();
+ EXPECT_TRUE(test_roots->IsEmpty());
+
+ // Ensure that when the TestRootCerts is cleared, the trust settings
+ // revert to their original state, and don't linger. If trust status
+ // lingers, it will likely break other tests in net_unittests.
+ CertVerifyResult restored_verify_result;
+ int restored_status = test_cert->Verify("127.0.0.1", flags,
+ &restored_verify_result);
+ EXPECT_NE(OK, restored_status);
+ EXPECT_NE(0, restored_verify_result.cert_status &
+ CERT_STATUS_AUTHORITY_INVALID);
+ EXPECT_EQ(bad_status, restored_status);
+ EXPECT_EQ(bad_verify_result.cert_status, restored_verify_result.cert_status);
+}
+
+// TODO(rsleevi): Add tests for revocation checking via CRLs, ensuring that
+// TestRootCerts properly injects itself into the validation process. See
+// http://crbug.com/63958
+
+} // namespace net
diff --git a/net/data/ssl/certificates/README b/net/data/ssl/certificates/README
index a58aaa1..fda8fc7 100644
--- a/net/data/ssl/certificates/README
+++ b/net/data/ssl/certificates/README
@@ -20,13 +20,6 @@ unit tests.
- dod_root_ca_2_cert.der : A certificate chain for regression tests of
http://crbug.com/31497.
-- expired_cert.pem : An expired certificate, used by test_server.cc.
-
-- ok_cert.pem : A valid certificate, used by test_server.cc
-
-- root_ca_cert.crt : The testing root CA used to sign the test_server.cc's
- certificates.
-
- unosoft_hu_cert : Certificate used by X509CertificateTest.UnoSoftCertParsing.
- client.p12 : A PKCS #12 file containing a client certificate and a private
@@ -34,3 +27,44 @@ unit tests.
- punycodetest.der : A test self-signed server certificate with punycode name.
The common name is "xn--wgv71a119e.com" (日本語.com)
+
+=====
+Generated Test Certificates:
+=====
+The following certificates were generated locally, and are primarily used
+by test_server.cc and test_server.py. Each file contains the certificate
+and associated private key.
+ - expired_cert.pem : An expired certificate, used by test_server.cc.
+ - ok_cert.pem : A valid certificate, used by test_server.cc and others
+ - root_ca_cert.pem : The test root CA certificate, used to sign the test
+ certificates.
+
+In addition, two support files are provided to make it easy to make
+modifications or regenerate these certificates.
+ - openssl_ca.cnf : The configuration file used to generate the test CA
+ certificate and sign certificate requests.
+ - openssl_cert.cnf : The configuration file used to generate the certificate
+ requests for the ok and expired certificates.
+
+The following commands were used to generated the test root certificates
+Note: Be sure to adjust path slashes as appropriate for your platform.
+
+mkdir root_ca
+mkdir root_ca\private
+mkdir root_ca\newcerts
+echo 01 > root_ca\serial
+[On Windows]
+ copy nul: root_ca\index.txt
+ copy nul: root_ca\index.txt.attr
+[On POSIX]
+ touch root_ca\index.txt
+ touch root_ca\index.txt.attr
+
+openssl req -new -x509 -days 18250 -keyout root_ca\private\cacert.key -out root_ca\cacert.pem -config openssl_ca.cnf
+openssl req -new -keyout expired_cert.key -out expired_cert.req -config openssl_cert.cnf
+openssl req -new -keyout ok_cert.key -out ok_cert.req -config openssl_cert.cnf
+openssl ca -name CA_root -extensions user_cert -startdate 060101000000Z -enddate 070101000000Z -in expired_cert.req -out expired_cert.pem -config openssl_ca.cnf
+openssl ca -name CA_root -extensions user_cert -days 18250 -in ok_cert.req -out ok_cert.pem -config openssl_ca.cnf
+
+ Each generated certificate (.pem) and private key (.key) were then combined
+ into a single file matching the naming scheme described above.
diff --git a/net/data/ssl/certificates/expired_cert.pem b/net/data/ssl/certificates/expired_cert.pem
index 370330d..68a29be 100644
--- a/net/data/ssl/certificates/expired_cert.pem
+++ b/net/data/ssl/certificates/expired_cert.pem
@@ -1,41 +1,77 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 1 (0x1)
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
+ Validity
+ Not Before: Jan 1 00:00:00 2006 GMT
+ Not After : Jan 1 00:00:00 2007 GMT
+ Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (1024 bit)
+ Modulus (1024 bit):
+ 00:d3:b1:98:19:4f:40:2b:f0:73:a0:e1:9d:af:32:
+ 36:cb:62:aa:d9:9e:81:a1:60:1a:a8:2f:1a:6f:f3:
+ 0e:5e:31:50:a6:a3:f3:15:b1:71:8e:e7:e6:9b:ed:
+ 7f:b5:ff:2f:3e:b3:50:83:5b:70:a6:70:80:32:d5:
+ 26:6c:67:bb:40:41:0d:b7:63:f0:60:b8:63:d0:ad:
+ 10:be:4b:ad:b2:57:9f:c1:fc:42:2e:56:46:71:b8:
+ 78:00:28:9e:ec:80:2d:8d:a5:4e:c6:3c:e0:53:9a:
+ a3:c8:4b:3c:58:0f:89:4c:64:93:c0:db:49:a4:85:
+ 1e:50:31:b6:4e:66:c7:a1:fb
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints: critical
+ CA:FALSE
+ X509v3 Subject Key Identifier:
+ 32:7B:D6:18:4F:26:9C:71:90:B5:37:FF:E4:33:5E:C8:C5:02:34:90
+ X509v3 Authority Key Identifier:
+ keyid:CB:0C:83:29:5E:38:A2:D6:9F:F7:76:FB:B3:B6:48:84:4E:F8:4D:F3
+
+ X509v3 Extended Key Usage:
+ TLS Web Server Authentication, TLS Web Client Authentication
+ X509v3 Subject Alternative Name:
+ IP Address:127.0.0.1
+ Signature Algorithm: sha1WithRSAEncryption
+ 66:6b:d6:b8:e5:77:c8:e5:af:6d:5f:f9:97:cd:ae:72:f0:68:
+ 23:28:b2:58:d2:6d:b0:37:5f:ec:36:d5:77:af:a2:80:02:27:
+ 02:43:84:e7:de:54:7a:40:43:06:fd:93:78:59:16:d4:6f:e5:
+ a0:a5:6d:98:26:1b:6d:bf:67:92:67:e6:d1:d2:e7:e0:b2:5d:
+ ee:83:00:ab:1a:15:bd:25:a7:be:36:26:06:34:3b:1c:5d:be:
+ 21:31:45:51:4c:0e:83:c2:04:e6:fd:2e:a9:94:f8:8a:4e:ff:
+ af:89:ac:47:4c:85:79:19:f0:68:32:4c:aa:c0:6a:6c:9f:dc:
+ 4d:50
-----BEGIN CERTIFICATE-----
-MIIEZDCCAkygAwIBAgIBAzANBgkqhkiG9w0BAQUFADBgMRAwDgYDVQQDEwdUZXN0
-IENBMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
-TW91bnRhaW4gVmlldzESMBAGA1UEChMJQ2VydCBUZXN0MB4XDTA2MDEwMTAwMDAw
-MFoXDTA3MDEwMTAwMDAwMFowSjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlm
-b3JuaWExEjAQBgNVBAoTCUNlcnQgVGVzdDESMBAGA1UEAxMJMTI3LjAuMC4xMIGf
-MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDuUjUPzXBw61Xsh1RGSyJowrqC+TYv
-pf44P2c5sF/Y/KX0LoJEA72in+2d7N8sf3IsJvy6X1uPnVdX7wKzgtHI6FFjOcbR
-zs9MiyEJkeFKADI+ZMV0httNOy93ajESsjZMwgoHMKOv5ikNCdwE/nefSfu6Zuap
-CsadArkHe3d5dwIDAQABo4HCMIG/MAkGA1UdEwQCMAAwHQYDVR0OBBYEFNr8t46H
-i0oOuzYzmjE24g25B9fKMIGSBgNVHSMEgYowgYeAFF3Of5nj1BlBMU/Gz7El9Vqv
-45cxoWSkYjBgMRAwDgYDVQQDEwdUZXN0IENBMQswCQYDVQQGEwJVUzETMBEGA1UE
-CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzESMBAGA1UEChMJ
-Q2VydCBUZXN0ggkA1FGT1D/e2U4wDQYJKoZIhvcNAQEFBQADggIBABdhpWwsDDAn
-eQKSk70sigbUk1eeGzE0AR2nNfs1N/Lx+EYBmWdOEZTi5ngwJoDavb6okaOWRYV5
-nIyIWGuJQfJ6OPZycNn9HMC2vL9er2gu6y8/6Sob4POThAdf519oHXFWR7S5fnPK
-rvbspRHm/gycMA3Lvkzm2tHEQI4d+3pKAPtGtDUEnHEuo13tbaA3N8RJXStJXp4y
-foqYEPJpG5SD3hDBTlVbg6J3li6B4r2LfCMgRXjrsNJSBamPrXX8n+K2SzCPLDli
-9s387TMKLxGI7v5y5BcLcxuvBrAGS5rUw1q6+wNAvAkOSai6SfBmhUSn4OwQl0yX
-y/1IOj2iCEwUJDMHQRp0K03xvN+nAaqFbnbBxVcL42lgMkLt2cL+X4tkBPzx2/Ys
-4tuEk2/BftaHX0rby7OWCCh8q9QM+CmXzOipbwsjViTBpdR99RP7lrhojO3Tkx58
-bxHBj9EpOjxCQyv1x3xZ5GpyAIgSduVusHwk7FJBNetg5Csa0GBEr2d6Lh+zPSm/
-ZPgWqaVH6YoY+2HP2Mi2YxNYWJOR3ycNOxTuTp3M/glDBFYJaB5/PXTzFKrzo/vE
-za7vs4El0Ei7YZYC0vxqpUbiS6l7Ul+TPfk6q/OAkYjaJ76uYlcKVmN060wK83z5
-Vtoy6YuY/8hrMRl3jrMaiVsMSMg+nOsM
+MIICujCCAiOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzET
+MBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzEQMA4G
+A1UECgwHVGVzdCBDQTEVMBMGA1UEAwwMVGVzdCBSb290IENBMB4XDTA2MDEwMTAw
+MDAwMFoXDTA3MDEwMTAwMDAwMFowYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNh
+bGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3Qg
+Q0ExEjAQBgNVBAMMCTEyNy4wLjAuMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
+gYEA07GYGU9AK/BzoOGdrzI2y2Kq2Z6BoWAaqC8ab/MOXjFQpqPzFbFxjufmm+1/
+tf8vPrNQg1twpnCAMtUmbGe7QEENt2PwYLhj0K0QvkutslefwfxCLlZGcbh4ACie
+7IAtjaVOxjzgU5qjyEs8WA+JTGSTwNtJpIUeUDG2TmbHofsCAwEAAaOBgDB+MAwG
+A1UdEwEB/wQCMAAwHQYDVR0OBBYEFDJ71hhPJpxxkLU3/+QzXsjFAjSQMB8GA1Ud
+IwQYMBaAFMsMgyleOKLWn/d2+7O2SIRO+E3zMB0GA1UdJQQWMBQGCCsGAQUFBwMB
+BggrBgEFBQcDAjAPBgNVHREECDAGhwR/AAABMA0GCSqGSIb3DQEBBQUAA4GBAGZr
+1rjld8jlr21f+ZfNrnLwaCMosljSbbA3X+w21XevooACJwJDhOfeVHpAQwb9k3hZ
+FtRv5aClbZgmG22/Z5Jn5tHS5+CyXe6DAKsaFb0lp742JgY0OxxdviExRVFMDoPC
+BOb9LqmU+IpO/6+JrEdMhXkZ8GgyTKrAamyf3E1Q
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
-MIICWwIBAAKBgQDuUjUPzXBw61Xsh1RGSyJowrqC+TYvpf44P2c5sF/Y/KX0LoJE
-A72in+2d7N8sf3IsJvy6X1uPnVdX7wKzgtHI6FFjOcbRzs9MiyEJkeFKADI+ZMV0
-httNOy93ajESsjZMwgoHMKOv5ikNCdwE/nefSfu6ZuapCsadArkHe3d5dwIDAQAB
-AoGARF1wu0fDqaDY1TE9C60iActalZfH44NKmfgWNIZT+HsBYDq3Q6uPCse18kew
-/aLRrbjBZvVT3q7UD3WQ4M32P44rEAAhdYGhMndF53xrtX5SQ7LPb381mlPoJ2AE
-Wv9R+0X45aRtiSC/Y7E9ebN5p4RY9NjRUjcaI67d1NgNAwECQQD6k83u6R73tsJt
-k2OCTnUxvQi9Oo5GwDfiubHOQx3tG3ZDIjsyg1GCJa/PVRiP6PXkgIoAWmiyGFIR
-+gIO86kPAkEA83qA4L4HxLQLapDvBDNgiz9eHA/FJvsk5yH0jupR+CDLRqM6Dfzj
-iLeztyJV3n96lMDIc4lEzplysDw/TD6ZGQJABzYFsSBoUbyir8CUFoXnfXzxKXDr
-80FI2m95nHP2AoLNznTHu1ZoHBS1kIPkZw/PM7o3Pndbl/R3OCk3sfJ1JQJABSB7
-PkBCIZ4471GF9uyuB8CZ1rVuTVfUexl38Np2R2dJYH9nZYwBrotPuXd7n2fHyQIW
-NniZflA03gkmvBBFYQJADftQ5+jabFxXkqwZsrsvtG+Ji53BZrLrczFxgPyGVfUF
-A1pyQE3M6SykYjp+S3Zg6eS+yKE06guecEVhTQtwBA==
+MIICWwIBAAKBgQDTsZgZT0Ar8HOg4Z2vMjbLYqrZnoGhYBqoLxpv8w5eMVCmo/MV
+sXGO5+ab7X+1/y8+s1CDW3CmcIAy1SZsZ7tAQQ23Y/BguGPQrRC+S62yV5/B/EIu
+VkZxuHgAKJ7sgC2NpU7GPOBTmqPISzxYD4lMZJPA20mkhR5QMbZOZseh+wIDAQAB
+AoGAQlI9SJCfliR61UhZ0m105TtAM3WJPzmQoGhBbBlFwxTII6zxlzZEUXUttmQt
+wqLz9jzPWJfpLvvH7iUBKK1G6ESXTzquNUYq6Yhn48EeLUygjple/T2EYwHxrVKg
+lxt7TpFrkH/lJyRSRTSJjCnBBMfFwM8NA7rJkONsUocyKqECQQDsR6DAAmiw5PDe
+PRiPww+Dup9Tps1DpcVcbzXw66bGRnM8WlTu++IQPzn09mGCBjFVEX0TjdGl9OLx
+GFvfGPjNAkEA5Vyoi4YIiF22Ul/9Mwo5wmqOaTK2WZO/4XynpstW7n0ySk5XIKL4
+x17NMTuhbXqLtvO4LLRboIE1O3cFlm+l5wJAKQvUcCa6+yf6dBEXCDpxooe0D/sl
+I4BTxdgH/d9iLIWmlTB4GsAlKH9jWRvIGqdqwIV2PgRgDD17gzihFSOobQJAHR/w
+/xacCsTrm/Y4brzDrN5fCxi3cxSB7x4nI9T6Svp24lykT66iLJ7rK29JBl/jUe4M
+2xBj+jOuEMkCWqH+zQJAfY8tFgk+lTz4uXklpyeU1ZR9VZup4g3eJf21bp5nBRfk
+yROePkvzYNRyOIceRKFMXMUWQ2+CPauBCiwZcOpISQ==
-----END RSA PRIVATE KEY-----
diff --git a/net/data/ssl/certificates/ok_cert.pem b/net/data/ssl/certificates/ok_cert.pem
index 6349b78..fedfb43 100644
--- a/net/data/ssl/certificates/ok_cert.pem
+++ b/net/data/ssl/certificates/ok_cert.pem
@@ -1,41 +1,77 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 2 (0x2)
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
+ Validity
+ Not Before: Dec 6 01:05:39 2010 GMT
+ Not After : Nov 23 01:05:39 2060 GMT
+ Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (1024 bit)
+ Modulus (1024 bit):
+ 00:c8:a8:e7:59:13:08:20:9b:55:83:33:b2:1b:58:
+ 29:5f:0a:13:b5:f6:71:5e:69:e5:76:c5:50:dd:32:
+ 8e:ad:11:2e:fe:47:f8:3a:9f:d3:66:74:70:b2:ad:
+ 19:1d:b7:03:64:7d:97:f7:57:38:26:22:cd:06:62:
+ 6b:71:60:d3:55:cc:96:db:e3:e7:16:76:61:49:b5:
+ 13:20:2b:45:2e:4a:11:52:2d:c9:e0:be:d0:5a:5f:
+ fe:6e:e6:a1:22:80:81:cb:e7:5e:b8:46:20:7a:85:
+ 8a:fb:d5:7c:e1:f6:83:67:92:a5:37:a1:58:82:c6:
+ fc:90:2e:4d:d6:3d:68:86:67
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints: critical
+ CA:FALSE
+ X509v3 Subject Key Identifier:
+ 1E:43:8E:14:6F:C3:47:85:45:BE:27:89:6C:F6:5B:98:D7:0B:DF:FD
+ X509v3 Authority Key Identifier:
+ keyid:CB:0C:83:29:5E:38:A2:D6:9F:F7:76:FB:B3:B6:48:84:4E:F8:4D:F3
+
+ X509v3 Extended Key Usage:
+ TLS Web Server Authentication, TLS Web Client Authentication
+ X509v3 Subject Alternative Name:
+ IP Address:127.0.0.1
+ Signature Algorithm: sha1WithRSAEncryption
+ 75:f7:88:9c:c6:fe:44:17:d5:34:16:ca:80:58:c1:8c:70:95:
+ d6:d9:39:d3:44:01:36:a9:ed:73:80:7e:62:ee:3a:5a:ad:ee:
+ 88:42:1e:72:8e:21:b6:12:30:a2:1e:2b:6a:1f:ec:48:c1:9c:
+ 28:8c:e2:7a:3a:df:7f:fe:2b:2b:18:81:32:b6:f9:ae:e6:de:
+ 3a:6c:90:9f:da:0f:9e:c7:d4:e5:e0:2c:ab:86:4e:c4:ee:63:
+ 8f:e0:b6:31:a0:52:b5:b3:cf:24:17:f7:14:78:7a:56:e9:43:
+ f4:8c:2c:b8:4f:5b:ff:21:a8:8f:3c:38:32:52:6f:e3:a9:6d:
+ 6e:23
-----BEGIN CERTIFICATE-----
-MIIEZDCCAkygAwIBAgIBATANBgkqhkiG9w0BAQUFADBgMRAwDgYDVQQDEwdUZXN0
-IENBMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
-TW91bnRhaW4gVmlldzESMBAGA1UEChMJQ2VydCBUZXN0MB4XDTA4MDcyODIyMzIy
-OFoXDTEzMDcyNzIyMzIyOFowSjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlm
-b3JuaWExEjAQBgNVBAoTCUNlcnQgVGVzdDESMBAGA1UEAxMJMTI3LjAuMC4xMIGf
-MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQj2tPWPUgbuI4H3/3dnttqVbndwU3
-3BdRCd67DFM44GRrsjDSH4bY/EbFyX9D52d/iy6ZaAmDePcCz5k/fgP3DMujykYG
-qgNiV2ywxTlMj7NlN2C7SRt68fQMZr5iI7rypdxuaZt9lSMD3ENBffYtuLTyZd9a
-3JPJe1TaIab5GwIDAQABo4HCMIG/MAkGA1UdEwQCMAAwHQYDVR0OBBYEFCYLBv5K
-x5sLNVlpLh5FwTwhdDl7MIGSBgNVHSMEgYowgYeAFF3Of5nj1BlBMU/Gz7El9Vqv
-45cxoWSkYjBgMRAwDgYDVQQDEwdUZXN0IENBMQswCQYDVQQGEwJVUzETMBEGA1UE
-CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzESMBAGA1UEChMJ
-Q2VydCBUZXN0ggkA1FGT1D/e2U4wDQYJKoZIhvcNAQEFBQADggIBAEtkVmLObUgk
-b2cIA2S+QDtifq1UgVfBbytvR2lFmnADOR55mo0gHQG3HHqq4g034LmoVXDHhUk8
-Gb6aFiv4QubmVhLXcUelTRXwiNvGzkW7pC6Jrq105hdPjzXMKTcmiLaopm5Fqfc7
-hj5Cn1Sjspc8pdeQjrbeMdvca7KlFrGP8YkwCU2xOOX9PiN9G0966BWfjnr/fZZp
-+OQVuUFHdiAZwthEMuDpAAXHqYXIsermgdOpgJaA53cf8NqBV2QGhtFgtsJCRoiu
-7DKqhyRWBGyz19VIH2b7y+6qvQVxuHk19kKRM0nftw/yNcJnm7gtttespMUPsOMa
-a2SD1G0hm0TND6vxaBhgR3cVqpl/qIpAdFi00Tm7hTyYE7I43zPW03t+/DpCt3Um
-EMRZsQ90co5q+bcx/vQ7YAtwUh30uMb0wpibeyCwDp8cqNmSiRkEuc/FjTYes5t8
-5gR//WX1l0+qjrjusO9NmoLnq2Yk6UcioX+z+q6Z/dudGfqhLfeWD2Q0LWYA242C
-d7km5Y3KAt1PJdVsof/aiVhVdddY/OIEKTRQhWEdDbosy2eh16BCKXT2FFvhNDg1
-AYFvn6I8nj9IldMJiIc3DdhacEAEzRMeRgPdzAa1griKUGknxsyTyRii8ru0WS6w
-DCNrlDOVXdzYGEZooBI76BDVY0W0akjV
+MIICvDCCAiWgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzET
+MBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzEQMA4G
+A1UECgwHVGVzdCBDQTEVMBMGA1UEAwwMVGVzdCBSb290IENBMCAXDTEwMTIwNjAx
+MDUzOVoYDzIwNjAxMTIzMDEwNTM5WjBgMQswCQYDVQQGEwJVUzETMBEGA1UECAwK
+Q2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzEQMA4GA1UECgwHVGVz
+dCBDQTESMBAGA1UEAwwJMTI3LjAuMC4xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
+iQKBgQDIqOdZEwggm1WDM7IbWClfChO19nFeaeV2xVDdMo6tES7+R/g6n9NmdHCy
+rRkdtwNkfZf3VzgmIs0GYmtxYNNVzJbb4+cWdmFJtRMgK0UuShFSLcngvtBaX/5u
+5qEigIHL5164RiB6hYr71Xzh9oNnkqU3oViCxvyQLk3WPWiGZwIDAQABo4GAMH4w
+DAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUHkOOFG/DR4VFvieJbPZbmNcL3/0wHwYD
+VR0jBBgwFoAUywyDKV44otaf93b7s7ZIhE74TfMwHQYDVR0lBBYwFAYIKwYBBQUH
+AwEGCCsGAQUFBwMCMA8GA1UdEQQIMAaHBH8AAAEwDQYJKoZIhvcNAQEFBQADgYEA
+dfeInMb+RBfVNBbKgFjBjHCV1tk500QBNqntc4B+Yu46Wq3uiEIeco4hthIwoh4r
+ah/sSMGcKIziejrff/4rKxiBMrb5rubeOmyQn9oPnsfU5eAsq4ZOxO5jj+C2MaBS
+tbPPJBf3FHh6VulD9IwsuE9b/yGojzw4MlJv46ltbiM=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
-MIICXQIBAAKBgQDQj2tPWPUgbuI4H3/3dnttqVbndwU33BdRCd67DFM44GRrsjDS
-H4bY/EbFyX9D52d/iy6ZaAmDePcCz5k/fgP3DMujykYGqgNiV2ywxTlMj7NlN2C7
-SRt68fQMZr5iI7rypdxuaZt9lSMD3ENBffYtuLTyZd9a3JPJe1TaIab5GwIDAQAB
-AoGANHXu8z2YIzlhE+bwhGm8MGBpKL3qhRuKjeriqMA36tWezOw8lY4ymEAU+Ulv
-BsCdaxqydQoTYou57m4TyUHEcxq9pq3H0zB0qL709DdHi/t4zbV9XIoAzC5v0/hG
-9+Ca29TwC02FCw+qLkNrtwCpwOcQmc+bPxqvFu1iMiahURECQQD2I/Hi2413CMZz
-TBjl8fMiVO9GhA2J0sc8Qi+YcgJakaLD9xcbaiLkTzPZDlA389C1b6Ia+poAr4YA
-Ve0FFbxpAkEA2OobayyHE/QtPEqoy6NLR57jirmVBNmSWWd4lAyL5UIHIYVttJZg
-8CLvbzaU/iDGwR+wKsM664rKPHEmtlyo4wJBAMeSqYO5ZOCJGu9NWjrHjM3fdAsG
-8zs2zhiLya+fcU0iHIksBW5TBmt71Jw/wMc9R5J1K0kYvFml98653O5si1ECQBCk
-RV4/mE1rmlzZzYFyEcB47DQkcM5ictvxGEsje0gnfKyRtAz6zI0f4QbDRUMJ+LWw
-XK+rMsYHa+SfOb0b9skCQQCLdeonsIpFDv/Uv+flHISy0WA+AFkLXrRkBKh6G/OD
-dMHaNevkJgUnpceVEnkrdenp5CcEoFTI17pd+nBgDm/B
+MIICWwIBAAKBgQDIqOdZEwggm1WDM7IbWClfChO19nFeaeV2xVDdMo6tES7+R/g6
+n9NmdHCyrRkdtwNkfZf3VzgmIs0GYmtxYNNVzJbb4+cWdmFJtRMgK0UuShFSLcng
+vtBaX/5u5qEigIHL5164RiB6hYr71Xzh9oNnkqU3oViCxvyQLk3WPWiGZwIDAQAB
+AoGAf5i4FDI/9swP4nBbD3xOQnsb8ZeWm5znJ1FtjFr70x2cLmIBfPXo7buZdmUQ
+FY8s/xfGLKgvskBq82ZeQCh7+XDOteAv5ixLoez0q91l6zP4pqoCRzpYzt8EDjs0
+V7cs0rUxRZXksEuUxkKqUR+b1KUDVwrZyLUgMoJaSOyb2cECQQDpx0iyFeKvGXAC
+1jiCb9GQBWHh/W2Opi2+4gRvNRpcCnZ+JqELeXS/l7LOAO+pezwta0kFnQYL7QUG
+6mhUrdIRAkEA27u3hK/CDBhHO7Atinn5+U6r4m3ztNoAc1cvBRYix/Z33EOJTuj7
+6xicUYC29fTRWOp90rsiNyE8x3SolK1Y9wJAMCCqwp7m0A14ldzsPU4v4mp5QEEg
+MOHdQRLevtY72v78bfQd63LRqi/cy7Q9orKQLPmNSu6MtB/TjRzs5aHzQQJAUl19
+HxmazVnUacVSbNPoJdGdkJTSg3osLRADKg7wHrB+oWwXbiLbO3bQMaTj8DJCvue3
+HmTTIIMu+zz5bDHGZQJANhxaCoMFJkeKG0N7580hFrxzTzRXeQyeDbP3TzLRJygX
+d+YkP+lFcuOlvWBy/tv/i9BTqsC0y+2V76FSoH9JPQ==
-----END RSA PRIVATE KEY-----
diff --git a/net/data/ssl/certificates/openssl_ca.cnf b/net/data/ssl/certificates/openssl_ca.cnf
new file mode 100644
index 0000000..103b80a
--- /dev/null
+++ b/net/data/ssl/certificates/openssl_ca.cnf
@@ -0,0 +1,72 @@
+[ca]
+default_ca = CA_root
+preserve = yes
+
+# The default test root, used to generate certificates and CRLs.
+[CA_root]
+dir = ./root_ca
+database = $dir/index.txt
+new_certs_dir = $dir/newcerts
+serial = $dir/serial
+certificate = $dir/cacert.pem
+private_key = $dir/private/cacert.key
+RANDFILE = $dir/private/.rand
+default_days = 365
+default_crl_days = 30
+default_md = sha1
+policy = policy_anything
+unique_subject = no
+copy_extensions = copy
+
+[user_cert]
+# Extensions to add when signing a request for an EE cert
+basicConstraints = critical, CA:false
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid:always
+extendedKeyUsage = serverAuth,clientAuth
+
+[ca_cert]
+# Extensions to add when signing a request for an intermediate/CA cert
+basicConstraints = critical, CA:true
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid:always
+keyUsage = critical, keyCertSign, cRLSign
+
+[crl_extensions]
+# Extensions to add when signing a CRL
+authorityKeyIdentifier = keyid:always
+
+[policy_anything]
+# Default signing policy
+countryName = optional
+stateOrProvinceName = optional
+localityName = optional
+organizationName = optional
+organizationalUnitName = optional
+commonName = optional
+emailAddress = optional
+
+[req]
+# The request section used to generate the root CA certificate. This should
+# not be used to generate end-entity certificates. For certificates other
+# than the root CA, see README to find the appropriate configuration file
+# (ie: openssl_cert.cnf).
+default_bits = 1024
+default_md = sha1
+string_mask = utf8only
+prompt = no
+encrypt_key = no
+distinguished_name = req_ca_dn
+x509_extensions = req_ca_exts
+
+[req_ca_dn]
+C = US
+ST = California
+L = Mountain View
+O = Test CA
+CN = Test Root CA
+
+[req_ca_exts]
+basicConstraints = critical, CA:true
+keyUsage = critical, keyCertSign, cRLSign
+subjectKeyIdentifier = hash \ No newline at end of file
diff --git a/net/data/ssl/certificates/openssl_cert.cnf b/net/data/ssl/certificates/openssl_cert.cnf
new file mode 100644
index 0000000..078ae03
--- /dev/null
+++ b/net/data/ssl/certificates/openssl_cert.cnf
@@ -0,0 +1,23 @@
+# The default configuration to use when requesting a certificate to be used
+# as the server test certificate, whether OK or expired.
+[req]
+# Common configuration for all requests
+default_bits = 1024
+default_md = sha1
+string_mask = utf8only
+prompt = no
+encrypt_key = no
+distinguished_name = req_dn
+req_extensions = req_extensions
+
+[req_dn]
+C = US
+ST = California
+L = Mountain View
+O = Test CA
+# TODO(joth): Support matching the iPAddress subjectAltName when using
+# OpenSSL. See http://crbug.com/62973 and http://crbug.com/20276
+CN = 127.0.0.1
+
+[req_extensions]
+subjectAltName = IP:127.0.0.1 \ No newline at end of file
diff --git a/net/data/ssl/certificates/root_ca_cert.crt b/net/data/ssl/certificates/root_ca_cert.crt
deleted file mode 100644
index 873b4f7..0000000
--- a/net/data/ssl/certificates/root_ca_cert.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGCTCCA/GgAwIBAgIJANRRk9Q/3tlOMA0GCSqGSIb3DQEBBQUAMGAxEDAOBgNV
-BAMTB1Rlc3QgQ0ExCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYw
-FAYDVQQHEw1Nb3VudGFpbiBWaWV3MRIwEAYDVQQKEwlDZXJ0IFRlc3QwHhcNMDgw
-NzI4MjIzMjAxWhcNMTMwNzI3MjIzMjAxWjBgMRAwDgYDVQQDEwdUZXN0IENBMQsw
-CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRh
-aW4gVmlldzESMBAGA1UEChMJQ2VydCBUZXN0MIICIjANBgkqhkiG9w0BAQEFAAOC
-Ag8AMIICCgKCAgEAuyR/rlxmPi+L48rXdlACgz+Cq06jf8Ns0H/eaofQCB7odsKu
-CXzyngqGetohqAmW8XNzGKAlHzjJcnySzhxG8V3V22aILTI7lfSxrNpLKGaJ69MO
-lg6zFty/zkZ94oRX6Q1t2yRrWBN4isXMOxwRg7cGzuN8ejG0/vbgIVQulF6cqDge
-5BXtXhD4GnKEbvLh5TRxK8x3VBNlVIlRx1gKVz0q8MFgyFRcMS3PEiaFarSWwq8M
-I7QaeifUnXwA5BquXdwf6+8CWdanPv2wG9LylWHK/YbnBz4g/9ppYCAz2V++em+K
-/CADHRNIyuEXw6LWmwmYzMd05J+46dbEEua0tRiK3yVl5Q60Bo4NZcUZA3KZ7A9l
-JS13/tzFKLqCn+SLzQnZfDAp8ys/Eu9arxYq70dAPUv0eJDSuXNQx2HQBxF3phQ+
-9AvKH5Vu4UgD3lSCqXiLwtOjeCxXZJ3830jIkFOupSZI7H3f3NmMxDba5OzLXXb+
-GfLgR9ulI1Qk+UmISL6/Tsu5453jn6opv/kapD9g7Jc6AFTak1SlHWZU4JH7c1x6
-THSB9FLcjbHt5heK8qcFMU5U6OiJmKW2WKn5k2Rwv0hteLhfN1lchqZkwobzu74z
-QG/Z2Q/ClU89X95U5qF1ZxuriP668SxETzPR8D9uBU/5VzkrC3c8SbcTFUECAwEA
-AaOBxTCBwjAdBgNVHQ4EFgQUXc5/mePUGUExT8bPsSX1Wq/jlzEwgZIGA1UdIwSB
-ijCBh4AUXc5/mePUGUExT8bPsSX1Wq/jlzGhZKRiMGAxEDAOBgNVBAMTB1Rlc3Qg
-Q0ExCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1N
-b3VudGFpbiBWaWV3MRIwEAYDVQQKEwlDZXJ0IFRlc3SCCQDUUZPUP97ZTjAMBgNV
-HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQA2FoW/5tyDSkEfEQFVfLcfNvmt
-s2XK7SbPZtoIYx0lnqXZ8fUxCg0chmkiCypng6msvhEwGs3z7qZWd04bY8RAZYbQ
-9bhjvB0LH4lVfsK4pCAKYQDAHC271XZPd3RmdHaekH70T0w2avFxG9M91CaVRaLh
-SheeCVm6aJcFnaBfSd78vDz8Ly+Jtod737JZrkmP7Oko78SrB/CfiMcf6jIdekxP
-9bwi75Y0+rfaK9x/Pyjz4U23ooZLX2f/21c3JSTwR19qGZOHvQircP7scQzgtlJl
-zGxQKEZwYHAPxNHbPoScLOP2LXqWUnheC5LQcsm3BtRKM5AniEqW8HqKAxrGOPNO
-cj8E3hVf6lZaAeFH5CTN/rudb869k/ibJkaeo6pjeytssMr+PvpstWmWqhfEJTZn
-om7w+xMsYKe1cZv6c2WIVFuvl/g8CLYuu6SXjtDqj7HVbhC1+IupXl5N4pBXIXCf
-Q33D4JsmM51ySMk5SxAl6HaxiB9hU3dqJqWjiKBJztLnZUDWUpCb3g09yygXeTmY
-fNGaY+mZX3HBohrAy0kj06OgT12ovmWsmQRIvpTBybTbX37vt11xOLN/WNnifkH9
-HcEOc/WW68x2dJbnF4sBfV/0edA8ectGdyqzn1gvYjdMDPSSbAZ4B/EIijfHqILb
-R3901wi9fJwhBxFIuQ==
------END CERTIFICATE-----
diff --git a/net/data/ssl/certificates/root_ca_cert.pem b/net/data/ssl/certificates/root_ca_cert.pem
new file mode 100644
index 0000000..2c7de65
--- /dev/null
+++ b/net/data/ssl/certificates/root_ca_cert.pem
@@ -0,0 +1,72 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number:
+ 9c:2f:96:4d:cf:ed:53:de
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
+ Validity
+ Not Before: Dec 6 00:53:08 2010 GMT
+ Not After : Nov 23 00:53:08 2060 GMT
+ Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (1024 bit)
+ Modulus (1024 bit):
+ 00:a7:be:04:ae:99:87:df:58:e1:c9:cb:ba:f1:0d:
+ 91:be:9c:14:66:f5:27:55:ad:9e:ea:ba:11:78:fa:
+ cf:a5:4d:50:02:9a:23:ad:9d:3a:c7:d9:23:6b:b1:
+ ec:8e:0f:ce:c3:de:d1:a6:8e:29:ba:15:12:4b:39:
+ d9:31:28:64:08:dd:8e:b9:f3:b9:67:f1:3d:76:16:
+ c1:cb:a6:3f:f5:26:86:8e:37:29:0f:2f:62:de:87:
+ 44:31:60:88:3f:d2:bc:ad:43:ea:0f:69:bc:4b:cd:
+ 32:b3:3b:1b:e8:7f:31:3d:d7:37:f7:5a:4a:51:38:
+ 24:91:dc:ec:18:19:a4:ec:67
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints: critical
+ CA:TRUE
+ X509v3 Key Usage: critical
+ Certificate Sign, CRL Sign
+ X509v3 Subject Key Identifier:
+ CB:0C:83:29:5E:38:A2:D6:9F:F7:76:FB:B3:B6:48:84:4E:F8:4D:F3
+ Signature Algorithm: sha1WithRSAEncryption
+ 60:e9:9d:7b:e2:38:d2:cf:65:82:d1:b8:f3:11:b1:be:33:9b:
+ f8:fd:16:6c:0f:5e:ef:ae:d7:da:61:9a:0d:db:c7:76:17:c9:
+ b5:f3:da:e1:c0:2b:73:45:9f:b5:29:e0:20:52:3a:76:e3:38:
+ 9a:1d:95:34:65:e2:ac:8d:bb:9a:19:fa:b3:49:41:e4:2c:88:
+ e6:ab:31:c2:d8:25:0c:82:84:4d:d7:50:f2:84:b5:01:7e:ed:
+ f2:4a:b6:33:4f:9d:44:e9:24:8b:be:47:a7:66:82:dc:16:72:
+ 9e:5a:82:7b:cf:95:df:60:cb:90:fe:cc:10:88:d0:ae:96:1b:
+ 88:72
+-----BEGIN CERTIFICATE-----
+MIICiDCCAfGgAwIBAgIJAJwvlk3P7VPeMA0GCSqGSIb3DQEBBQUAMGMxCzAJBgNV
+BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBW
+aWV3MRAwDgYDVQQKDAdUZXN0IENBMRUwEwYDVQQDDAxUZXN0IFJvb3QgQ0EwIBcN
+MTAxMjA2MDA1MzA4WhgPMjA2MDExMjMwMDUzMDhaMGMxCzAJBgNVBAYTAlVTMRMw
+EQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYD
+VQQKDAdUZXN0IENBMRUwEwYDVQQDDAxUZXN0IFJvb3QgQ0EwgZ8wDQYJKoZIhvcN
+AQEBBQADgY0AMIGJAoGBAKe+BK6Zh99Y4cnLuvENkb6cFGb1J1Wtnuq6EXj6z6VN
+UAKaI62dOsfZI2ux7I4PzsPe0aaOKboVEks52TEoZAjdjrnzuWfxPXYWwcumP/Um
+ho43KQ8vYt6HRDFgiD/SvK1D6g9pvEvNMrM7G+h/MT3XN/daSlE4JJHc7BgZpOxn
+AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1Ud
+DgQWBBTLDIMpXjii1p/3dvuztkiETvhN8zANBgkqhkiG9w0BAQUFAAOBgQBg6Z17
+4jjSz2WC0bjzEbG+M5v4/RZsD17vrtfaYZoN28d2F8m189rhwCtzRZ+1KeAgUjp2
+4ziaHZU0ZeKsjbuaGfqzSUHkLIjmqzHC2CUMgoRN11DyhLUBfu3ySrYzT51E6SSL
+vkenZoLcFnKeWoJ7z5XfYMuQ/swQiNCulhuIcg==
+-----END CERTIFICATE-----
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQCnvgSumYffWOHJy7rxDZG+nBRm9SdVrZ7quhF4+s+lTVACmiOt
+nTrH2SNrseyOD87D3tGmjim6FRJLOdkxKGQI3Y6587ln8T12FsHLpj/1JoaONykP
+L2Leh0QxYIg/0rytQ+oPabxLzTKzOxvofzE91zf3WkpROCSR3OwYGaTsZwIDAQAB
+AoGAAeGYrdic9H1Lsvas9w0e6FNZyznOoiBbWuiRT5kIgSMX1Z+i7MyJnzopMokB
+TSqSOBIkqciIYUThOqTAcdOxI3+oz1nCOdbBJ5Rfg8EHG6RlMYG+d1OZ2hVFOWR9
+whM3b+kXjsHw5CKtsH3tdj/1UmjrVZnNQwOM5QKoAwfNUOECQQDbNc4WfleotScu
+u7ogLMueKIwq8sf9X15DecK9IIpqvW17uHZV4zb2LUQrF+/2ALNXpqPw75aCbAVl
+Mezm6eqXAkEAw+TvJiw6FggEiOe43eT0EU5eXmuLFyHpwcSg5HwPn+UVGu0JDmXE
+iF3Xr418vke/tD/9rra+m0gzdaEzRh1WsQJBANgBffGWT8SztUeMvsyjt4VCyVQs
+5jra9eUhn26EGUEzJiZKz3i0q90LH+gi71cGu7J8R4HMZRBhZzOfbaThDUMCQQC0
+j3TbU5KqsfM0GZotdRZ+SST0lN3ckZa70riWQb/JGsdMTUW2rpjrNMxUdO6RGOMb
+iowSmUCxMmi0OMRhETPRAkBrMCWdw63RmQ21zs6joJT24hv4IpBcxK41o/aH3kUg
+KWrXmZ98GqnH9DdQpAGGAP0G7JVIYXCZaMww6N/zNE5U
+-----END RSA PRIVATE KEY-----
diff --git a/net/net.gyp b/net/net.gyp
index 4460b41..c0ef9ea 100644
--- a/net/net.gyp
+++ b/net/net.gyp
@@ -880,6 +880,7 @@
'base/transport_security_state_unittest.cc',
'base/test_certificate_data.h',
'base/test_completion_callback_unittest.cc',
+ 'base/test_root_certs_unittest.cc',
'base/upload_data_stream_unittest.cc',
'base/x509_certificate_unittest.cc',
'base/x509_cert_types_mac_unittest.cc',
diff --git a/net/test/test_server.cc b/net/test/test_server.cc
index 9722dc1..ec8c687 100644
--- a/net/test/test_server.cc
+++ b/net/test/test_server.cc
@@ -307,7 +307,7 @@ bool TestServer::SetPythonPath() {
}
FilePath TestServer::GetRootCertificatePath() {
- return certificates_dir_.AppendASCII("root_ca_cert.crt");
+ return certificates_dir_.AppendASCII("root_ca_cert.pem");
}
bool TestServer::LoadTestRootCert() {
diff --git a/tools/python/google/httpd_config/httpd2.pem b/tools/python/google/httpd_config/httpd2.pem
index 6349b78..fedfb43 100644
--- a/tools/python/google/httpd_config/httpd2.pem
+++ b/tools/python/google/httpd_config/httpd2.pem
@@ -1,41 +1,77 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 2 (0x2)
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
+ Validity
+ Not Before: Dec 6 01:05:39 2010 GMT
+ Not After : Nov 23 01:05:39 2060 GMT
+ Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (1024 bit)
+ Modulus (1024 bit):
+ 00:c8:a8:e7:59:13:08:20:9b:55:83:33:b2:1b:58:
+ 29:5f:0a:13:b5:f6:71:5e:69:e5:76:c5:50:dd:32:
+ 8e:ad:11:2e:fe:47:f8:3a:9f:d3:66:74:70:b2:ad:
+ 19:1d:b7:03:64:7d:97:f7:57:38:26:22:cd:06:62:
+ 6b:71:60:d3:55:cc:96:db:e3:e7:16:76:61:49:b5:
+ 13:20:2b:45:2e:4a:11:52:2d:c9:e0:be:d0:5a:5f:
+ fe:6e:e6:a1:22:80:81:cb:e7:5e:b8:46:20:7a:85:
+ 8a:fb:d5:7c:e1:f6:83:67:92:a5:37:a1:58:82:c6:
+ fc:90:2e:4d:d6:3d:68:86:67
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints: critical
+ CA:FALSE
+ X509v3 Subject Key Identifier:
+ 1E:43:8E:14:6F:C3:47:85:45:BE:27:89:6C:F6:5B:98:D7:0B:DF:FD
+ X509v3 Authority Key Identifier:
+ keyid:CB:0C:83:29:5E:38:A2:D6:9F:F7:76:FB:B3:B6:48:84:4E:F8:4D:F3
+
+ X509v3 Extended Key Usage:
+ TLS Web Server Authentication, TLS Web Client Authentication
+ X509v3 Subject Alternative Name:
+ IP Address:127.0.0.1
+ Signature Algorithm: sha1WithRSAEncryption
+ 75:f7:88:9c:c6:fe:44:17:d5:34:16:ca:80:58:c1:8c:70:95:
+ d6:d9:39:d3:44:01:36:a9:ed:73:80:7e:62:ee:3a:5a:ad:ee:
+ 88:42:1e:72:8e:21:b6:12:30:a2:1e:2b:6a:1f:ec:48:c1:9c:
+ 28:8c:e2:7a:3a:df:7f:fe:2b:2b:18:81:32:b6:f9:ae:e6:de:
+ 3a:6c:90:9f:da:0f:9e:c7:d4:e5:e0:2c:ab:86:4e:c4:ee:63:
+ 8f:e0:b6:31:a0:52:b5:b3:cf:24:17:f7:14:78:7a:56:e9:43:
+ f4:8c:2c:b8:4f:5b:ff:21:a8:8f:3c:38:32:52:6f:e3:a9:6d:
+ 6e:23
-----BEGIN CERTIFICATE-----
-MIIEZDCCAkygAwIBAgIBATANBgkqhkiG9w0BAQUFADBgMRAwDgYDVQQDEwdUZXN0
-IENBMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
-TW91bnRhaW4gVmlldzESMBAGA1UEChMJQ2VydCBUZXN0MB4XDTA4MDcyODIyMzIy
-OFoXDTEzMDcyNzIyMzIyOFowSjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlm
-b3JuaWExEjAQBgNVBAoTCUNlcnQgVGVzdDESMBAGA1UEAxMJMTI3LjAuMC4xMIGf
-MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQj2tPWPUgbuI4H3/3dnttqVbndwU3
-3BdRCd67DFM44GRrsjDSH4bY/EbFyX9D52d/iy6ZaAmDePcCz5k/fgP3DMujykYG
-qgNiV2ywxTlMj7NlN2C7SRt68fQMZr5iI7rypdxuaZt9lSMD3ENBffYtuLTyZd9a
-3JPJe1TaIab5GwIDAQABo4HCMIG/MAkGA1UdEwQCMAAwHQYDVR0OBBYEFCYLBv5K
-x5sLNVlpLh5FwTwhdDl7MIGSBgNVHSMEgYowgYeAFF3Of5nj1BlBMU/Gz7El9Vqv
-45cxoWSkYjBgMRAwDgYDVQQDEwdUZXN0IENBMQswCQYDVQQGEwJVUzETMBEGA1UE
-CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzESMBAGA1UEChMJ
-Q2VydCBUZXN0ggkA1FGT1D/e2U4wDQYJKoZIhvcNAQEFBQADggIBAEtkVmLObUgk
-b2cIA2S+QDtifq1UgVfBbytvR2lFmnADOR55mo0gHQG3HHqq4g034LmoVXDHhUk8
-Gb6aFiv4QubmVhLXcUelTRXwiNvGzkW7pC6Jrq105hdPjzXMKTcmiLaopm5Fqfc7
-hj5Cn1Sjspc8pdeQjrbeMdvca7KlFrGP8YkwCU2xOOX9PiN9G0966BWfjnr/fZZp
-+OQVuUFHdiAZwthEMuDpAAXHqYXIsermgdOpgJaA53cf8NqBV2QGhtFgtsJCRoiu
-7DKqhyRWBGyz19VIH2b7y+6qvQVxuHk19kKRM0nftw/yNcJnm7gtttespMUPsOMa
-a2SD1G0hm0TND6vxaBhgR3cVqpl/qIpAdFi00Tm7hTyYE7I43zPW03t+/DpCt3Um
-EMRZsQ90co5q+bcx/vQ7YAtwUh30uMb0wpibeyCwDp8cqNmSiRkEuc/FjTYes5t8
-5gR//WX1l0+qjrjusO9NmoLnq2Yk6UcioX+z+q6Z/dudGfqhLfeWD2Q0LWYA242C
-d7km5Y3KAt1PJdVsof/aiVhVdddY/OIEKTRQhWEdDbosy2eh16BCKXT2FFvhNDg1
-AYFvn6I8nj9IldMJiIc3DdhacEAEzRMeRgPdzAa1griKUGknxsyTyRii8ru0WS6w
-DCNrlDOVXdzYGEZooBI76BDVY0W0akjV
+MIICvDCCAiWgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzET
+MBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzEQMA4G
+A1UECgwHVGVzdCBDQTEVMBMGA1UEAwwMVGVzdCBSb290IENBMCAXDTEwMTIwNjAx
+MDUzOVoYDzIwNjAxMTIzMDEwNTM5WjBgMQswCQYDVQQGEwJVUzETMBEGA1UECAwK
+Q2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzEQMA4GA1UECgwHVGVz
+dCBDQTESMBAGA1UEAwwJMTI3LjAuMC4xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
+iQKBgQDIqOdZEwggm1WDM7IbWClfChO19nFeaeV2xVDdMo6tES7+R/g6n9NmdHCy
+rRkdtwNkfZf3VzgmIs0GYmtxYNNVzJbb4+cWdmFJtRMgK0UuShFSLcngvtBaX/5u
+5qEigIHL5164RiB6hYr71Xzh9oNnkqU3oViCxvyQLk3WPWiGZwIDAQABo4GAMH4w
+DAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUHkOOFG/DR4VFvieJbPZbmNcL3/0wHwYD
+VR0jBBgwFoAUywyDKV44otaf93b7s7ZIhE74TfMwHQYDVR0lBBYwFAYIKwYBBQUH
+AwEGCCsGAQUFBwMCMA8GA1UdEQQIMAaHBH8AAAEwDQYJKoZIhvcNAQEFBQADgYEA
+dfeInMb+RBfVNBbKgFjBjHCV1tk500QBNqntc4B+Yu46Wq3uiEIeco4hthIwoh4r
+ah/sSMGcKIziejrff/4rKxiBMrb5rubeOmyQn9oPnsfU5eAsq4ZOxO5jj+C2MaBS
+tbPPJBf3FHh6VulD9IwsuE9b/yGojzw4MlJv46ltbiM=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
-MIICXQIBAAKBgQDQj2tPWPUgbuI4H3/3dnttqVbndwU33BdRCd67DFM44GRrsjDS
-H4bY/EbFyX9D52d/iy6ZaAmDePcCz5k/fgP3DMujykYGqgNiV2ywxTlMj7NlN2C7
-SRt68fQMZr5iI7rypdxuaZt9lSMD3ENBffYtuLTyZd9a3JPJe1TaIab5GwIDAQAB
-AoGANHXu8z2YIzlhE+bwhGm8MGBpKL3qhRuKjeriqMA36tWezOw8lY4ymEAU+Ulv
-BsCdaxqydQoTYou57m4TyUHEcxq9pq3H0zB0qL709DdHi/t4zbV9XIoAzC5v0/hG
-9+Ca29TwC02FCw+qLkNrtwCpwOcQmc+bPxqvFu1iMiahURECQQD2I/Hi2413CMZz
-TBjl8fMiVO9GhA2J0sc8Qi+YcgJakaLD9xcbaiLkTzPZDlA389C1b6Ia+poAr4YA
-Ve0FFbxpAkEA2OobayyHE/QtPEqoy6NLR57jirmVBNmSWWd4lAyL5UIHIYVttJZg
-8CLvbzaU/iDGwR+wKsM664rKPHEmtlyo4wJBAMeSqYO5ZOCJGu9NWjrHjM3fdAsG
-8zs2zhiLya+fcU0iHIksBW5TBmt71Jw/wMc9R5J1K0kYvFml98653O5si1ECQBCk
-RV4/mE1rmlzZzYFyEcB47DQkcM5ictvxGEsje0gnfKyRtAz6zI0f4QbDRUMJ+LWw
-XK+rMsYHa+SfOb0b9skCQQCLdeonsIpFDv/Uv+flHISy0WA+AFkLXrRkBKh6G/OD
-dMHaNevkJgUnpceVEnkrdenp5CcEoFTI17pd+nBgDm/B
+MIICWwIBAAKBgQDIqOdZEwggm1WDM7IbWClfChO19nFeaeV2xVDdMo6tES7+R/g6
+n9NmdHCyrRkdtwNkfZf3VzgmIs0GYmtxYNNVzJbb4+cWdmFJtRMgK0UuShFSLcng
+vtBaX/5u5qEigIHL5164RiB6hYr71Xzh9oNnkqU3oViCxvyQLk3WPWiGZwIDAQAB
+AoGAf5i4FDI/9swP4nBbD3xOQnsb8ZeWm5znJ1FtjFr70x2cLmIBfPXo7buZdmUQ
+FY8s/xfGLKgvskBq82ZeQCh7+XDOteAv5ixLoez0q91l6zP4pqoCRzpYzt8EDjs0
+V7cs0rUxRZXksEuUxkKqUR+b1KUDVwrZyLUgMoJaSOyb2cECQQDpx0iyFeKvGXAC
+1jiCb9GQBWHh/W2Opi2+4gRvNRpcCnZ+JqELeXS/l7LOAO+pezwta0kFnQYL7QUG
+6mhUrdIRAkEA27u3hK/CDBhHO7Atinn5+U6r4m3ztNoAc1cvBRYix/Z33EOJTuj7
+6xicUYC29fTRWOp90rsiNyE8x3SolK1Y9wJAMCCqwp7m0A14ldzsPU4v4mp5QEEg
+MOHdQRLevtY72v78bfQd63LRqi/cy7Q9orKQLPmNSu6MtB/TjRzs5aHzQQJAUl19
+HxmazVnUacVSbNPoJdGdkJTSg3osLRADKg7wHrB+oWwXbiLbO3bQMaTj8DJCvue3
+HmTTIIMu+zz5bDHGZQJANhxaCoMFJkeKG0N7580hFrxzTzRXeQyeDbP3TzLRJygX
+d+YkP+lFcuOlvWBy/tv/i9BTqsC0y+2V76FSoH9JPQ==
-----END RSA PRIVATE KEY-----
diff --git a/tools/python/google/httpd_config/root_ca_cert.crt b/tools/python/google/httpd_config/root_ca_cert.crt
deleted file mode 100644
index 873b4f7..0000000
--- a/tools/python/google/httpd_config/root_ca_cert.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGCTCCA/GgAwIBAgIJANRRk9Q/3tlOMA0GCSqGSIb3DQEBBQUAMGAxEDAOBgNV
-BAMTB1Rlc3QgQ0ExCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYw
-FAYDVQQHEw1Nb3VudGFpbiBWaWV3MRIwEAYDVQQKEwlDZXJ0IFRlc3QwHhcNMDgw
-NzI4MjIzMjAxWhcNMTMwNzI3MjIzMjAxWjBgMRAwDgYDVQQDEwdUZXN0IENBMQsw
-CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRh
-aW4gVmlldzESMBAGA1UEChMJQ2VydCBUZXN0MIICIjANBgkqhkiG9w0BAQEFAAOC
-Ag8AMIICCgKCAgEAuyR/rlxmPi+L48rXdlACgz+Cq06jf8Ns0H/eaofQCB7odsKu
-CXzyngqGetohqAmW8XNzGKAlHzjJcnySzhxG8V3V22aILTI7lfSxrNpLKGaJ69MO
-lg6zFty/zkZ94oRX6Q1t2yRrWBN4isXMOxwRg7cGzuN8ejG0/vbgIVQulF6cqDge
-5BXtXhD4GnKEbvLh5TRxK8x3VBNlVIlRx1gKVz0q8MFgyFRcMS3PEiaFarSWwq8M
-I7QaeifUnXwA5BquXdwf6+8CWdanPv2wG9LylWHK/YbnBz4g/9ppYCAz2V++em+K
-/CADHRNIyuEXw6LWmwmYzMd05J+46dbEEua0tRiK3yVl5Q60Bo4NZcUZA3KZ7A9l
-JS13/tzFKLqCn+SLzQnZfDAp8ys/Eu9arxYq70dAPUv0eJDSuXNQx2HQBxF3phQ+
-9AvKH5Vu4UgD3lSCqXiLwtOjeCxXZJ3830jIkFOupSZI7H3f3NmMxDba5OzLXXb+
-GfLgR9ulI1Qk+UmISL6/Tsu5453jn6opv/kapD9g7Jc6AFTak1SlHWZU4JH7c1x6
-THSB9FLcjbHt5heK8qcFMU5U6OiJmKW2WKn5k2Rwv0hteLhfN1lchqZkwobzu74z
-QG/Z2Q/ClU89X95U5qF1ZxuriP668SxETzPR8D9uBU/5VzkrC3c8SbcTFUECAwEA
-AaOBxTCBwjAdBgNVHQ4EFgQUXc5/mePUGUExT8bPsSX1Wq/jlzEwgZIGA1UdIwSB
-ijCBh4AUXc5/mePUGUExT8bPsSX1Wq/jlzGhZKRiMGAxEDAOBgNVBAMTB1Rlc3Qg
-Q0ExCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1N
-b3VudGFpbiBWaWV3MRIwEAYDVQQKEwlDZXJ0IFRlc3SCCQDUUZPUP97ZTjAMBgNV
-HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQA2FoW/5tyDSkEfEQFVfLcfNvmt
-s2XK7SbPZtoIYx0lnqXZ8fUxCg0chmkiCypng6msvhEwGs3z7qZWd04bY8RAZYbQ
-9bhjvB0LH4lVfsK4pCAKYQDAHC271XZPd3RmdHaekH70T0w2avFxG9M91CaVRaLh
-SheeCVm6aJcFnaBfSd78vDz8Ly+Jtod737JZrkmP7Oko78SrB/CfiMcf6jIdekxP
-9bwi75Y0+rfaK9x/Pyjz4U23ooZLX2f/21c3JSTwR19qGZOHvQircP7scQzgtlJl
-zGxQKEZwYHAPxNHbPoScLOP2LXqWUnheC5LQcsm3BtRKM5AniEqW8HqKAxrGOPNO
-cj8E3hVf6lZaAeFH5CTN/rudb869k/ibJkaeo6pjeytssMr+PvpstWmWqhfEJTZn
-om7w+xMsYKe1cZv6c2WIVFuvl/g8CLYuu6SXjtDqj7HVbhC1+IupXl5N4pBXIXCf
-Q33D4JsmM51ySMk5SxAl6HaxiB9hU3dqJqWjiKBJztLnZUDWUpCb3g09yygXeTmY
-fNGaY+mZX3HBohrAy0kj06OgT12ovmWsmQRIvpTBybTbX37vt11xOLN/WNnifkH9
-HcEOc/WW68x2dJbnF4sBfV/0edA8ectGdyqzn1gvYjdMDPSSbAZ4B/EIijfHqILb
-R3901wi9fJwhBxFIuQ==
------END CERTIFICATE-----
diff --git a/tools/python/google/httpd_config/root_ca_cert.pem b/tools/python/google/httpd_config/root_ca_cert.pem
new file mode 100644
index 0000000..2c7de65
--- /dev/null
+++ b/tools/python/google/httpd_config/root_ca_cert.pem
@@ -0,0 +1,72 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number:
+ 9c:2f:96:4d:cf:ed:53:de
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
+ Validity
+ Not Before: Dec 6 00:53:08 2010 GMT
+ Not After : Nov 23 00:53:08 2060 GMT
+ Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (1024 bit)
+ Modulus (1024 bit):
+ 00:a7:be:04:ae:99:87:df:58:e1:c9:cb:ba:f1:0d:
+ 91:be:9c:14:66:f5:27:55:ad:9e:ea:ba:11:78:fa:
+ cf:a5:4d:50:02:9a:23:ad:9d:3a:c7:d9:23:6b:b1:
+ ec:8e:0f:ce:c3:de:d1:a6:8e:29:ba:15:12:4b:39:
+ d9:31:28:64:08:dd:8e:b9:f3:b9:67:f1:3d:76:16:
+ c1:cb:a6:3f:f5:26:86:8e:37:29:0f:2f:62:de:87:
+ 44:31:60:88:3f:d2:bc:ad:43:ea:0f:69:bc:4b:cd:
+ 32:b3:3b:1b:e8:7f:31:3d:d7:37:f7:5a:4a:51:38:
+ 24:91:dc:ec:18:19:a4:ec:67
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints: critical
+ CA:TRUE
+ X509v3 Key Usage: critical
+ Certificate Sign, CRL Sign
+ X509v3 Subject Key Identifier:
+ CB:0C:83:29:5E:38:A2:D6:9F:F7:76:FB:B3:B6:48:84:4E:F8:4D:F3
+ Signature Algorithm: sha1WithRSAEncryption
+ 60:e9:9d:7b:e2:38:d2:cf:65:82:d1:b8:f3:11:b1:be:33:9b:
+ f8:fd:16:6c:0f:5e:ef:ae:d7:da:61:9a:0d:db:c7:76:17:c9:
+ b5:f3:da:e1:c0:2b:73:45:9f:b5:29:e0:20:52:3a:76:e3:38:
+ 9a:1d:95:34:65:e2:ac:8d:bb:9a:19:fa:b3:49:41:e4:2c:88:
+ e6:ab:31:c2:d8:25:0c:82:84:4d:d7:50:f2:84:b5:01:7e:ed:
+ f2:4a:b6:33:4f:9d:44:e9:24:8b:be:47:a7:66:82:dc:16:72:
+ 9e:5a:82:7b:cf:95:df:60:cb:90:fe:cc:10:88:d0:ae:96:1b:
+ 88:72
+-----BEGIN CERTIFICATE-----
+MIICiDCCAfGgAwIBAgIJAJwvlk3P7VPeMA0GCSqGSIb3DQEBBQUAMGMxCzAJBgNV
+BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBW
+aWV3MRAwDgYDVQQKDAdUZXN0IENBMRUwEwYDVQQDDAxUZXN0IFJvb3QgQ0EwIBcN
+MTAxMjA2MDA1MzA4WhgPMjA2MDExMjMwMDUzMDhaMGMxCzAJBgNVBAYTAlVTMRMw
+EQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYD
+VQQKDAdUZXN0IENBMRUwEwYDVQQDDAxUZXN0IFJvb3QgQ0EwgZ8wDQYJKoZIhvcN
+AQEBBQADgY0AMIGJAoGBAKe+BK6Zh99Y4cnLuvENkb6cFGb1J1Wtnuq6EXj6z6VN
+UAKaI62dOsfZI2ux7I4PzsPe0aaOKboVEks52TEoZAjdjrnzuWfxPXYWwcumP/Um
+ho43KQ8vYt6HRDFgiD/SvK1D6g9pvEvNMrM7G+h/MT3XN/daSlE4JJHc7BgZpOxn
+AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1Ud
+DgQWBBTLDIMpXjii1p/3dvuztkiETvhN8zANBgkqhkiG9w0BAQUFAAOBgQBg6Z17
+4jjSz2WC0bjzEbG+M5v4/RZsD17vrtfaYZoN28d2F8m189rhwCtzRZ+1KeAgUjp2
+4ziaHZU0ZeKsjbuaGfqzSUHkLIjmqzHC2CUMgoRN11DyhLUBfu3ySrYzT51E6SSL
+vkenZoLcFnKeWoJ7z5XfYMuQ/swQiNCulhuIcg==
+-----END CERTIFICATE-----
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQCnvgSumYffWOHJy7rxDZG+nBRm9SdVrZ7quhF4+s+lTVACmiOt
+nTrH2SNrseyOD87D3tGmjim6FRJLOdkxKGQI3Y6587ln8T12FsHLpj/1JoaONykP
+L2Leh0QxYIg/0rytQ+oPabxLzTKzOxvofzE91zf3WkpROCSR3OwYGaTsZwIDAQAB
+AoGAAeGYrdic9H1Lsvas9w0e6FNZyznOoiBbWuiRT5kIgSMX1Z+i7MyJnzopMokB
+TSqSOBIkqciIYUThOqTAcdOxI3+oz1nCOdbBJ5Rfg8EHG6RlMYG+d1OZ2hVFOWR9
+whM3b+kXjsHw5CKtsH3tdj/1UmjrVZnNQwOM5QKoAwfNUOECQQDbNc4WfleotScu
+u7ogLMueKIwq8sf9X15DecK9IIpqvW17uHZV4zb2LUQrF+/2ALNXpqPw75aCbAVl
+Mezm6eqXAkEAw+TvJiw6FggEiOe43eT0EU5eXmuLFyHpwcSg5HwPn+UVGu0JDmXE
+iF3Xr418vke/tD/9rra+m0gzdaEzRh1WsQJBANgBffGWT8SztUeMvsyjt4VCyVQs
+5jra9eUhn26EGUEzJiZKz3i0q90LH+gi71cGu7J8R4HMZRBhZzOfbaThDUMCQQC0
+j3TbU5KqsfM0GZotdRZ+SST0lN3ckZa70riWQb/JGsdMTUW2rpjrNMxUdO6RGOMb
+iowSmUCxMmi0OMRhETPRAkBrMCWdw63RmQ21zs6joJT24hv4IpBcxK41o/aH3kUg
+KWrXmZ98GqnH9DdQpAGGAP0G7JVIYXCZaMww6N/zNE5U
+-----END RSA PRIVATE KEY-----
diff --git a/tools/valgrind/valgrind_test.py b/tools/valgrind/valgrind_test.py
index 0280b1d..75eaa5e 100755
--- a/tools/valgrind/valgrind_test.py
+++ b/tools/valgrind/valgrind_test.py
@@ -327,15 +327,6 @@ class ValgrindTool(BaseTool):
We need to run some sanity checks, set up a Wine prefix, and make sure
wineserver is running by starting a dummy win32 program.
"""
- if not os.path.exists('/usr/share/ca-certificates/root_ca_cert.crt'):
- logging.warning('WARNING: SSL certificate missing! SSL tests will fail.')
- logging.warning('You need to run:')
- logging.warning('sudo cp src/net/data/ssl/certificates/root_ca_cert.crt '
- '/usr/share/ca-certificates/')
- logging.warning('sudo vi /etc/ca-certificates.conf')
- logging.warning(' (and add the line root_ca_cert.crt)')
- logging.warning('sudo update-ca-certificates')
-
# Shutdown the Wine server in case the last run got interrupted.
common.RunSubprocess([os.environ.get('WINESERVER'), '-k'])
diff --git a/tools/wine_valgrind/chrome_tests.sh b/tools/wine_valgrind/chrome_tests.sh
index 990e0a5..f98486d 100755
--- a/tools/wine_valgrind/chrome_tests.sh
+++ b/tools/wine_valgrind/chrome_tests.sh
@@ -241,16 +241,6 @@ init_runtime() {
echo Please kill the server listening on port 1337, or reboot. The net tests need this port.
exit 1
fi
- if test ! -f /usr/share/ca-certificates/root_ca_cert.crt
- then
- echo "You need to do"
- echo "sudo cp src/net/data/ssl/certificates/root_ca_cert.crt /usr/share/ca-certificates/"
- echo "sudo vi /etc/ca-certificates.conf (and add the line root_ca_cert.crt)"
- echo "sudo update-ca-certificates"
- echo "else ssl tests will fail."
- echo "(Alternately, modify this script to run Juan's importer, http://bugs.winehq.org/show_bug.cgi?id=20370#c4 )"
- exit 1
- fi
if test -n "$VNC"
then