Ejemplo n.º 1
0
 def test_700_001(self):
     # generate config with one MD
     domain = self.test_domain
     domains = [domain, "www." + domain]
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_drive_mode("auto")
     conf.add_md(domains)
     conf.install()
     #
     # restart, check that MD is synched to store
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(domains)
     stat = TestEnv.get_md_status(domain)
     assert stat["watched"] == 0
     #
     # add vhost for MD, restart should drive it
     conf.add_vhost(domains)
     conf.install()
     assert TestEnv.apache_restart() == 0
     assert TestEnv.await_completion([domain])
     TestEnv.check_md_complete(domain)
     stat = TestEnv.get_md_status(domain)
     assert stat["watched"] == 1
     #
     cert = TestEnv.get_cert(domain)
     assert domain in cert.get_san_list()
     #
     # challenges should have been removed
     # file system needs to have correct permissions
     TestEnv.check_dir_empty(TestEnv.store_challenges())
     TestEnv.check_file_permissions(domain)
Ejemplo n.º 2
0
    def test_310_104(self):
        name = "testdomain.org"
        HttpdConf(local_CA=False,
                  text="""
            MDomain testdomain.org www.testdomain.org mail.testdomain.org
            """).install()
        assert TestEnv.apache_restart() == 0
        TestEnv.check_md([name, "www.testdomain.org", "mail.testdomain.org"],
                         state=1,
                         ca=TestEnv.ACME_URL_DEFAULT,
                         protocol="ACME")
        HttpdConf(local_CA=False,
                  text="""
            MDCertificateAuthority http://acme.test.org:4000/directory
            MDCertificateProtocol ACME
            MDCertificateAgreement http://acme.test.org:4000/terms/v1

            MDomain testdomain.org www.testdomain.org mail.testdomain.org
            """).install()
        assert TestEnv.apache_restart() == 0
        TestEnv.check_md([name, "www.testdomain.org", "mail.testdomain.org"],
                         state=1,
                         ca="http://acme.test.org:4000/directory",
                         protocol="ACME",
                         agreement="http://acme.test.org:4000/terms/v1")
Ejemplo n.º 3
0
    def test_720_007(self):
        dns01cmd = ("%s/dns01.py" % TestEnv.TESTROOT)

        domain = self.test_domain
        dwild = "*." + domain
        wwwdomain = "www." + domain
        domains = [dwild]

        conf = HttpdConf()
        conf.add_admin("*****@*****.**")
        conf.add_ca_challenges(["dns-01"])
        conf.add_dns01_cmd(dns01cmd)
        conf.add_md(domains)
        conf.add_vhost(wwwdomain)
        conf.install()

        # restart, check that md is in store
        assert TestEnv.apache_restart() == 0
        TestEnv.check_md(domains)
        # await drive completion
        assert TestEnv.await_completion([wwwdomain])
        TestEnv.check_md_complete(dwild)
        # check: SSL is running OK
        cert_a = TestEnv.get_cert(wwwdomain)
        altnames = cert_a.get_san_list()
        assert domains == altnames
Ejemplo n.º 4
0
    def test_602_000(self):
        # test case: generate config with md -> restart -> drive -> generate config
        # with vhost and ssl -> restart -> check HTTPS access
        domain = self.test_domain
        domains = [domain, "www." + domain]

        # - generate config with one md
        conf = HttpdConf()
        conf.add_admin("admin@" + domain)
        conf.add_drive_mode("manual")
        conf.add_md(domains)
        conf.install()
        # - restart, check that md is in store
        assert TestEnv.apache_restart() == 0
        TestEnv.check_md(domains)
        # - drive
        assert TestEnv.a2md(["-v", "drive", domain])['rv'] == 0
        assert TestEnv.apache_restart() == 0
        TestEnv.check_md_complete(domain)
        # - append vhost to config
        conf.add_vhost(domains)
        conf.install()
        assert TestEnv.apache_restart() == 0
        # check: SSL is running OK
        cert = TestEnv.get_cert(domain)
        assert domain in cert.get_san_list()

        # check file system permissions:
        TestEnv.check_file_permissions(domain)
Ejemplo n.º 5
0
 def test_700_011(self):
     domain = self.test_domain
     domains = [domain, "www." + domain]
     # generate 1 MD and 1 vhost, map port 443 onto itself where the server does not listen
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_line("Protocols http/1.1 acme-tls/1")
     conf.add_drive_mode("auto")
     conf.add_ca_challenges(["tls-alpn-01"])
     conf._add_line("MDPortMap 443:99")
     conf.add_md(domains)
     conf.add_vhost(domains)
     conf.install()
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(domains)
     assert not TestEnv.is_renewing(domain)
     #
     # now the same with a 443 mapped to a supported port
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_line("Protocols http/1.1 acme-tls/1")
     conf.add_drive_mode("auto")
     conf.add_ca_challenges(["tls-alpn-01"])
     conf._add_line("MDPortMap 443:%s" % TestEnv.HTTPS_PORT)
     conf.add_md(domains)
     conf.add_vhost(domains)
     conf.install()
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(domains)
     assert TestEnv.await_completion([domain])
Ejemplo n.º 6
0
    def test_310_302(self):
        name = "testdomain.org"
        HttpdConf(local_CA=False,
                  text="""
            MDCertificateAuthority http://acme.test.org:4000/directory
            MDCertificateProtocol ACME
            MDCertificateAgreement http://acme.test.org:4000/terms/v1

            MDomain testdomain.org www.testdomain.org mail.testdomain.org
            """).install()
        assert TestEnv.apache_restart() == 0
        # setup: sync with changed ca info
        HttpdConf(local_CA=False,
                  text="""
            ServerAdmin mailto:[email protected]

            MDCertificateAuthority http://somewhere.com:6666/directory
            MDCertificateProtocol ACME
            MDCertificateAgreement http://somewhere.com:6666/terms/v1

            MDomain testdomain.org www.testdomain.org mail.testdomain.org
            """).install()
        assert TestEnv.apache_restart() == 0
        # check: md stays the same with previous ca info
        TestEnv.check_md([name, "www.testdomain.org", "mail.testdomain.org"],
                         state=1,
                         ca="http://somewhere.com:6666/directory",
                         protocol="ACME",
                         agreement="http://somewhere.com:6666/terms/v1")
Ejemplo n.º 7
0
 def test_700_005(self):
     # generate 1 MD and 1 vhost
     domain = self.test_domain
     nameA = "a." + domain
     domains = [domain, nameA]
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_drive_mode("manual")
     conf.add_md(domains)
     conf.add_vhost(nameA, docRoot="htdocs/a")
     conf.install()
     #
     # create docRoot folder
     self._write_res_file(os.path.join(TestEnv.APACHE_HTDOCS_DIR, "a"),
                          "name.txt", nameA)
     #
     # restart, check that md is in store
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(domains)
     #
     # check: that request to domains give 503 Service Unavailable
     cert1 = TestEnv.get_cert(nameA)
     assert nameA in cert1.get_san_list()
     assert TestEnv.getStatus(nameA, "/name.txt") == 503
     #
     # check temporary cert from server
     cert2 = CertUtil(TestEnv.path_fallback_cert(domain))
     assert cert1.get_serial() == cert2.get_serial(), \
         "Unexpected temporary certificate on vhost %s. Expected cn: %s , but found cn: %s" % ( nameA, cert2.get_cn(), cert1.get_cn() )
Ejemplo n.º 8
0
 def test_702_040(self):
     domain = self.test_domain
     domains = [domain, "www." + domain]
     #
     # generate 1 MD and 1 vhost
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_line("LogLevel core:debug")
     conf.add_line("LogLevel ssl:debug")
     conf.add_line("Protocols http/1.1 acme-tls/1")
     conf.add_drive_mode("auto")
     conf.add_ca_challenges(["tls-alpn-01"])
     conf.add_md(domains)
     conf.add_vhost(domains)
     conf.install()
     #
     # restart (-> drive), check that MD was synched and completes
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(domains)
     # check that acme-tls/1 is available for all domains
     stat = TestEnv.get_md_status(domain)
     assert stat["proto"]["acme-tls/1"] == domains
     assert TestEnv.await_completion([domain])
     TestEnv.check_md_complete(domain)
     #
     # check SSL running OK
     cert = TestEnv.get_cert(domain)
     assert domain in cert.get_san_list()
Ejemplo n.º 9
0
 def test_700_003(self):
     # generate 1 MD and 2 vhosts
     domain = self.test_domain
     nameA = "a." + domain
     nameB = "b." + domain
     domains = [domain, nameA, nameB]
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_md(domains)
     conf.add_vhost(nameA, docRoot="htdocs/a")
     conf.add_vhost(nameB, docRoot="htdocs/b")
     conf.install()
     #
     # create docRoot folder
     self._write_res_file(os.path.join(TestEnv.APACHE_HTDOCS_DIR, "a"),
                          "name.txt", nameA)
     self._write_res_file(os.path.join(TestEnv.APACHE_HTDOCS_DIR, "b"),
                          "name.txt", nameB)
     #
     # restart (-> drive), check that MD was synched and completes
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(domains)
     assert TestEnv.await_completion([domain, nameA, nameB])
     TestEnv.check_md_complete(domain)
     #
     # check: SSL is running OK
     certA = TestEnv.get_cert(nameA)
     assert nameA in certA.get_san_list()
     certB = TestEnv.get_cert(nameB)
     assert nameB in certB.get_san_list()
     assert certA.get_serial() == certB.get_serial()
     #
     assert TestEnv.get_content(nameA, "/name.txt") == nameA
     assert TestEnv.get_content(nameB, "/name.txt") == nameB
Ejemplo n.º 10
0
 def test_702_010(self):
     domain = self.test_domain
     domains = [domain, "www." + domain]
     #
     # generate 1 MD and 1 vhost, map port 80 onto itself where the server does not listen
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_drive_mode("auto")
     conf.add_ca_challenges(["http-01"])
     conf._add_line("MDPortMap 80:99")
     conf.add_md(domains)
     conf.add_vhost(domains)
     conf.install()
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(domains)
     assert not TestEnv.is_renewing(domain)
     #
     # now the same with a 80 mapped to a supported port
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_drive_mode("auto")
     conf.add_ca_challenges(["http-01"])
     conf._add_line("MDPortMap 80:%s" % TestEnv.HTTP_PORT)
     conf.add_md(domains)
     conf.add_vhost(domains)
     conf.install()
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(domains)
     assert TestEnv.await_completion([domain])
Ejemplo n.º 11
0
 def test_702_006(self):
     domain = self.test_domain
     nameA = "test-a." + domain
     domains = [domain, nameA]
     #
     # generate 1 MD, 1 vhost
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_ca_challenges(["invalid-01", "invalid-02"])
     conf.add_md(domains)
     conf.add_vhost(nameA, docRoot="htdocs/a")
     conf.install()
     #
     # create docRoot folder
     self._write_res_file(os.path.join(TestEnv.APACHE_HTDOCS_DIR, "a"),
                          "name.txt", nameA)
     #
     # restart, check that md is in store
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(domains)
     # await drive completion
     md = TestEnv.await_error(domain)
     assert md
     assert md['renewal']['errors'] > 0
     assert md['renewal']['last']['problem'] == 'challenge-mismatch'
     assert 'account' not in md['ca']
     #
     # check: that request to domains give 503 Service Unavailable
     cert = TestEnv.get_cert(nameA)
     assert nameA in cert.get_san_list()
     assert TestEnv.getStatus(nameA, "/name.txt") == 503
Ejemplo n.º 12
0
    def test_310_107(self):
        HttpdConf(text="""
            MDomain testdomain.org www.testdomain.org mail.testdomain.org
            MDomain testdomain2.org www.testdomain2.org mail.testdomain2.org

            <VirtualHost *:12346>
                ServerName testdomain.org
                ServerAlias www.testdomain.org
                ServerAdmin mailto:[email protected]
            </VirtualHost>

            <VirtualHost *:12346>
                ServerName testdomain2.org
                ServerAlias www.testdomain2.org
                ServerAdmin mailto:[email protected]
            </VirtualHost>
            """).install()
        assert TestEnv.apache_restart() == 0
        name1 = "testdomain.org"
        name2 = "testdomain2.org"
        TestEnv.check_md([name1, "www." + name1, "mail." + name1],
                         state=1,
                         contacts=["mailto:admin@" + name1])
        TestEnv.check_md([name2, "www." + name2, "mail." + name2],
                         state=1,
                         contacts=["mailto:admin@" + name2])
Ejemplo n.º 13
0
 def test_700_002(self):
     # generate config with two MDs
     domain = self.test_domain
     domainA = "a-" + domain
     domainB = "b-" + domain
     domainsA = [domainA, "www." + domainA]
     domainsB = [domainB, "www." + domainB]
     conf = HttpdConf()
     conf.add_admin("*****@*****.**")
     conf.add_drive_mode("auto")
     conf.add_md(domainsA)
     conf.add_md(domainsB)
     conf.add_vhost(domainsA)
     conf.add_vhost(domainsB)
     conf.install()
     #
     # restart, check that md is in store
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(domainsA)
     TestEnv.check_md(domainsB)
     # await drive completion
     assert TestEnv.await_completion([domainA, domainB])
     TestEnv.check_md_complete(domainA)
     TestEnv.check_md_complete(domainB)
     #
     # check: SSL is running OK
     certA = TestEnv.get_cert(domainA)
     assert domainsA == certA.get_san_list()
     certB = TestEnv.get_cert(domainB)
     assert domainsB == certB.get_san_list()
     #
     # should have a single account now
     assert 1 == len(TestEnv.list_accounts())
Ejemplo n.º 14
0
 def test_310_108(self):
     HttpdConf(text="""
         MDomain testdomain.org WWW.testdomain.org MAIL.testdomain.org
         """).install()
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(
         ["testdomain.org", "www.testdomain.org", "mail.testdomain.org"],
         state=1)
Ejemplo n.º 15
0
 def test_310_105(self):
     HttpdConf(text="""
         ServerAdmin mailto:[email protected]
         MDomain testdomain.org www.testdomain.org mail.testdomain.org
         """).install()
     assert TestEnv.apache_restart() == 0
     name = "testdomain.org"
     TestEnv.check_md([name, "www.testdomain.org", "mail.testdomain.org"],
                      state=1,
                      contacts=["mailto:[email protected]"])
Ejemplo n.º 16
0
 def test_310_102(self):
     assert TestEnv.a2md(["add", "testdomain.org",
                          "www.testdomain.org"])['rv'] == 0
     HttpdConf(text="""
         MDomain testdomain.org www.testdomain.org mail.testdomain.org
         """).install()
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(
         ["testdomain.org", "www.testdomain.org", "mail.testdomain.org"],
         state=1)
Ejemplo n.º 17
0
 def test_310_200(self):
     dnsList = [
         "testdomain.org", "www.testdomain.org", "mail.testdomain.org"
     ]
     TestEnv.a2md(["add"] + dnsList)
     TestEnv.check_md(dnsList, state=1)
     conf = HttpdConf()
     conf.install()
     assert TestEnv.apache_restart() == 0
     # check: md stays in store
     TestEnv.check_md(dnsList, state=1)
Ejemplo n.º 18
0
 def test_310_500(self):
     HttpdConf(text="""
         MDStoreDir md-other
         MDomain testdomain.org www.testdomain.org mail.testdomain.org
         """).install()
     assert TestEnv.apache_restart() == 0
     assert TestEnv.a2md(["list"])['jout']['output'] == []
     TestEnv.set_store_dir("md-other")
     TestEnv.check_md(
         ["testdomain.org", "www.testdomain.org", "mail.testdomain.org"],
         state=1)
     TestEnv.clear_store()
     TestEnv.set_store_dir_default()
Ejemplo n.º 19
0
 def test_310_300(self):
     dnsList = [
         "testdomain.org", "mail.testdomain.org", "www.testdomain.org"
     ]
     TestEnv.a2md(["add"] + dnsList)
     TestEnv.check_md(dnsList, state=1)
     HttpdConf(text="""
         MDomain testdomain.org www.testdomain.org mail.testdomain.org
         """).install()
     assert TestEnv.apache_restart() == 0
     # check: dns list changes
     TestEnv.check_md(
         ["testdomain.org", "www.testdomain.org", "mail.testdomain.org"],
         state=1)
Ejemplo n.º 20
0
 def test_310_201(self):
     dnsList = [
         "testdomain.org", "test.testdomain.org", "www.testdomain.org",
         "mail.testdomain.org"
     ]
     TestEnv.a2md(["add"] + dnsList)
     TestEnv.check_md(dnsList, state=1)
     HttpdConf(text="""
         MDomain testdomain.org www.testdomain.org mail.testdomain.org
         """).install()
     assert TestEnv.apache_restart() == 0
     # check: DNS has been removed from md in store
     TestEnv.check_md(
         ["testdomain.org", "www.testdomain.org", "mail.testdomain.org"],
         state=1)
Ejemplo n.º 21
0
 def test_310_205(self):
     name = "testdomain.org"
     HttpdConf(text="""
         ServerAdmin mailto:[email protected]
         MDomain testdomain.org www.testdomain.org mail.testdomain.org
         """).install()
     assert TestEnv.apache_restart() == 0
     # setup: sync with admin info removed
     HttpdConf(text="""
         MDomain testdomain.org www.testdomain.org mail.testdomain.org
         """).install()
     assert TestEnv.apache_restart() == 0
     # check: md stays the same with previous admin info
     TestEnv.check_md([name, "www.testdomain.org", "mail.testdomain.org"],
                      state=1,
                      contacts=["mailto:[email protected]"])
Ejemplo n.º 22
0
 def test_310_202(self):
     dnsList = [
         "name.testdomain.org", "testdomain.org", "www.testdomain.org",
         "mail.testdomain.org"
     ]
     TestEnv.a2md(["add"] + dnsList)
     TestEnv.check_md(dnsList, state=1)
     HttpdConf(text="""
         MDomain testdomain.org www.testdomain.org mail.testdomain.org
         """).install()
     assert TestEnv.apache_restart() == 0
     # check: md overwrite previous name and changes name
     TestEnv.check_md(
         ["testdomain.org", "www.testdomain.org", "mail.testdomain.org"],
         md="testdomain.org",
         state=1)
Ejemplo n.º 23
0
 def test_702_031(self):
     domain = self.test_domain
     nameX = "test-x." + domain
     nameA = "test-a." + domain
     nameB = "test-b." + domain
     nameC = "test-c." + domain
     domains = [nameX, nameA, nameB]
     #
     # generate 1 MD and 2 vhosts
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_md(domains)
     conf.add_vhost(nameA)
     conf.add_vhost(nameB)
     conf.install()
     #
     # restart (-> drive), check that MD was synched and completes
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(domains)
     assert TestEnv.await_completion([nameX])
     TestEnv.check_md_complete(nameX)
     #
     # check: SSL is running OK
     certA = TestEnv.get_cert(nameA)
     assert nameA in certA.get_san_list()
     certB = TestEnv.get_cert(nameB)
     assert nameB in certB.get_san_list()
     assert certA.get_serial() == certB.get_serial()
     #
     # change MD by removing 1st name and adding another
     new_list = [nameA, nameB, nameC]
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_md(new_list)
     conf.add_vhost(nameA)
     conf.add_vhost(nameB)
     conf.install()
     # restart, check that host still works and have new cert
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(new_list)
     assert TestEnv.await_completion([nameA])
     #
     certA2 = TestEnv.get_cert(nameA)
     assert nameA in certA2.get_san_list()
     assert certA.get_serial() != certA2.get_serial()
Ejemplo n.º 24
0
    def test_602_002(self):
        # test case: one md, that covers two vhosts
        domain = self.test_domain
        name_a = "a." + domain
        name_b = "b." + domain
        domains = [domain, name_a, name_b]

        # - generate config with one md
        conf = HttpdConf()
        conf.add_admin("admin@" + domain)
        conf.add_drive_mode("manual")
        conf.add_md(domains)
        conf.install()

        # - restart, check that md is in store
        assert TestEnv.apache_restart() == 0
        TestEnv.check_md(domains)

        # - drive
        assert TestEnv.a2md(["drive", domain])['rv'] == 0
        assert TestEnv.apache_restart() == 0
        TestEnv.check_md_complete(domain)

        # - append vhost to config
        conf.add_vhost(name_a, doc_root="htdocs/a")
        conf.add_vhost(name_b, doc_root="htdocs/b")
        conf.install()

        # - create docRoot folder
        self._write_res_file(os.path.join(TestEnv.APACHE_HTDOCS_DIR, "a"),
                             "name.txt", name_a)
        self._write_res_file(os.path.join(TestEnv.APACHE_HTDOCS_DIR, "b"),
                             "name.txt", name_b)

        # check: SSL is running OK
        assert TestEnv.apache_restart() == 0
        cert_a = TestEnv.get_cert(name_a)
        assert name_a in cert_a.get_san_list()
        cert_b = TestEnv.get_cert(name_b)
        assert name_b in cert_b.get_san_list()
        assert cert_a.same_serial_as(cert_b)
        assert TestEnv.get_content(name_a, "/name.txt") == name_a
        assert TestEnv.get_content(name_b, "/name.txt") == name_b
Ejemplo n.º 25
0
    def test_720_001(self):
        domain = self.test_domain

        # generate config with DNS wildcard
        domains = [domain, "*." + domain]
        conf = HttpdConf()
        conf.add_admin("*****@*****.**")
        conf.add_md(domains)
        conf.add_vhost(domains)
        conf.install()

        # restart, check that md is in store
        assert TestEnv.apache_restart() == 0
        TestEnv.check_md(domains)
        # await drive completion
        md = TestEnv.await_error(domain)
        assert md
        assert md['renewal']['errors'] > 0
        assert md['renewal']['last']['problem'] == 'challenge-mismatch'
Ejemplo n.º 26
0
    def test_710_003(self):
        domain = "a-" + self.test_domain
        domainb = "b-" + self.test_domain

        # use ACMEv1 initially
        TestEnv.set_acme('acmev1')
        ca_url = TestEnv.ACME_URL

        domains = [domain, "www." + domain]
        conf = HttpdConf(local_CA=False,
                         text="""
ServerAdmin [email protected]
MDCertificateAuthority %s
MDCertificateAgreement accepted
MDMembers auto
            """ % (ca_url))
        conf.add_md([domain])
        conf.add_vhost(domains)
        conf.install()
        assert TestEnv.apache_restart() == 0
        TestEnv.check_md(domains)
        assert TestEnv.await_completion([domain])
        assert (0, 0) == TestEnv.httpd_error_log_count()
        TestEnv.check_md(domains, ca=ca_url)

        # use ACMEv2 now, same MD, no CA url
        TestEnv.set_acme('acmev2')
        # this changes the default CA url
        assert TestEnv.ACME_URL_DEFAULT != ca_url

        conf = HttpdConf(local_CA=False,
                         text="""
ServerAdmin [email protected]
MDCertificateAgreement accepted
MDMembers auto
            """)
        conf.start_md([domain])
        conf.end_md()
        conf.start_md2([domainb])
        # this willg get the reald Let's Encrypt URL assigned, turn off
        # auto renewal, so we will not talk to them
        conf.add_line("MDRenewMode manual")
        conf.end_md2()
        conf.add_vhost(domains)
        conf.add_vhost(domainb)
        conf.install()

        assert TestEnv.apache_restart() == 0
        assert (0, 0) == TestEnv.httpd_error_log_count()
        # the existing MD was migrated to new CA url
        TestEnv.check_md(domains, ca=TestEnv.ACME_URL_DEFAULT)
        # the new MD got the new default anyway
        TestEnv.check_md([domainb], ca=TestEnv.ACME_URL_DEFAULT)
Ejemplo n.º 27
0
 def test_700_030(self):
     domain = self.test_domain
     nameX = "x." + domain
     nameA = "a." + domain
     nameB = "b." + domain
     domains = [nameX, nameA, nameB]
     #
     # generate 1 MD and 2 vhosts
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_md(domains)
     conf.add_vhost(nameA)
     conf.add_vhost(nameB)
     conf.install()
     #
     # restart (-> drive), check that MD was synched and completes
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(domains)
     assert TestEnv.await_completion([nameX])
     TestEnv.check_md_complete(nameX)
     #
     # check: SSL is running OK
     certA = TestEnv.get_cert(nameA)
     assert nameA in certA.get_san_list()
     certB = TestEnv.get_cert(nameB)
     assert nameB in certB.get_san_list()
     assert certA.get_serial() == certB.get_serial()
     #
     # change MD by removing 1st name
     new_list = [nameA, nameB]
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_md(new_list)
     conf.add_vhost(nameA)
     conf.add_vhost(nameB)
     conf.install()
     # restart, check that host still works and have same cert
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(new_list)
     status = TestEnv.get_certificate_status(nameA)
     assert status['serial'] == certA.get_serial()
Ejemplo n.º 28
0
    def test_600_002(self):
        # test case: one md, that covers two vhosts
        domain = self.test_domain
        nameA = "a-" + domain
        nameB = "b-" + domain
        domains = [domain, nameA, nameB]
        conf = HttpdConf()
        conf.add_admin("admin@" + domain)
        conf.add_drive_mode("manual")
        conf.add_md(domains)
        conf.install()

        # - restart, check that md is in store
        assert TestEnv.apache_restart() == 0
        TestEnv.check_md(domains)

        # - drive
        assert TestEnv.a2md(["drive", domain])['rv'] == 0
        assert TestEnv.apache_restart() == 0
        TestEnv.check_md_complete(domain)

        # - append vhost to config
        conf.add_vhost(nameA, docRoot="htdocs/a")
        conf.add_vhost(nameB, docRoot="htdocs/b")
        conf.install()

        # - create docRoot folder
        self._write_res_file(os.path.join(TestEnv.APACHE_HTDOCS_DIR, "a"),
                             "name.txt", nameA)
        self._write_res_file(os.path.join(TestEnv.APACHE_HTDOCS_DIR, "b"),
                             "name.txt", nameB)

        # check: SSL is running OK
        assert TestEnv.apache_restart() == 0
        certA = TestEnv.get_cert(nameA)
        assert nameA in certA.get_san_list()
        certB = TestEnv.get_cert(nameB)
        assert nameB in certB.get_san_list()
        assert certA.get_serial() == certB.get_serial()
        assert TestEnv.get_content(nameA, "/name.txt") == nameA
        assert TestEnv.get_content(nameB, "/name.txt") == nameB
Ejemplo n.º 29
0
    def test_720_002(self):
        dns01cmd = ("%s/dns01-not-found.py" % TestEnv.TESTROOT)

        domain = self.test_domain
        domains = [domain, "*." + domain]

        conf = HttpdConf()
        conf.add_admin("*****@*****.**")
        conf.add_ca_challenges(["dns-01"])
        conf.add_dns01_cmd(dns01cmd)
        conf.add_md(domains)
        conf.add_vhost(domains)
        conf.install()

        # restart, check that md is in store
        assert TestEnv.apache_restart() == 0
        TestEnv.check_md(domains)
        # await drive completion
        md = TestEnv.await_error(domain)
        assert md
        assert md['renewal']['errors'] > 0
        assert md['renewal']['last']['problem'] == 'challenge-setup-failure'
Ejemplo n.º 30
0
 def test_700_004(self, challengeType):
     # generate 1 MD and 1 vhost
     domain = self.test_domain
     domains = [domain, "www." + domain]
     conf = HttpdConf()
     conf.add_admin("admin@" + domain)
     conf.add_line("Protocols http/1.1 acme-tls/1")
     conf.add_drive_mode("auto")
     conf.add_ca_challenges([challengeType])
     conf.add_md(domains)
     conf.add_vhost(domains)
     conf.install()
     #
     # restart (-> drive), check that MD was synched and completes
     assert TestEnv.apache_restart() == 0
     TestEnv.check_md(domains)
     assert TestEnv.await_completion([domain])
     TestEnv.check_md_complete(domain)
     #
     # check SSL running OK
     cert = TestEnv.get_cert(domain)
     assert domain in cert.get_san_list()