def test_revoke_not_issued(self): req = RevocationRequest(req_id=self.tpp_zone + '\\not-issued.example.com') with self.assertRaises(Exception): self.tpp_conn.revoke_cert(req) req = RevocationRequest( thumbprint="2b25ff9f8725dfee37c6a7adcba31897b12e921d") with self.assertRaises(Exception): self.tpp_conn.revoke_cert(req) req = RevocationRequest() with self.assertRaises(Exception): self.tpp_conn.revoke_cert(req)
def test_revoke_normal(self): req, cert = simple_enroll(self.tpp_conn, self.tpp_zone) rev_req = RevocationRequest(req_id=req.id) self.tpp_conn.revoke_cert(rev_req) time.sleep(1) with self.assertRaises(Exception): self.tpp_conn.renew_cert(req)
def test_revoke_normal_thumbprint(self): req, cert = simple_enroll(self.tpp_conn, self.tpp_zone) cert = x509.load_pem_x509_certificate(cert.cert.encode(), default_backend()) thumbprint = binascii.hexlify(cert.fingerprint(hashes.SHA1())).decode() rev_req = RevocationRequest(thumbprint=thumbprint) self.tpp_conn.revoke_cert(rev_req) time.sleep(1) with self.assertRaises(Exception): self.tpp_conn.renew_cert(req)
def main(): # Get credentials from environment variables token = environ.get('CLOUD_APIKEY') user = environ.get('TPP_USER') password = environ.get('TPP_PASSWORD') url = environ.get('TPP_URL') zone = environ.get("ZONE") fake = environ.get('FAKE') if fake: # If fake is true, test connection will be used. conn = Connection(fake=True) else: # Connection will be chosen automatically based on which arguments are passed. # If token is passed Venafi Cloud connection will be used. # If user, password, and URL Venafi Platform (TPP) will be used. conn = Connection(url=url, token=token, user=user, password=password, http_request_kwargs={"verify": False}) # If your TPP server certificate signed with your own CA, or available only via proxy, you can specify # a trust bundle using requests vars: #conn = Connection(url=url, token=token, user=user, password=password, # http_request_kwargs={"verify": "/path-to/bundle.pem"}) request = CertificateRequest(common_name=randomword(10) + ".venafi.example.com") request.san_dns = [ "www.client.venafi.example.com", "ww1.client.venafi.example.com" ] if not isinstance(conn, CloudConnection): # Venafi Cloud doesn't support email or IP SANs in CSR request.email_addresses = [ "*****@*****.**", "*****@*****.**" ] request.ip_addresses = ["127.0.0.1", "192.168.1.1"] # Specify ordering certificates in chain. Root can be "first" or "last". By default it last. You also can # specify "ignore" to ignore chain (supported only for Platform). # configure key type, RSA example # request.key_type = KeyType(KeyType.RSA, 4096) # or set it to ECDSA request.key_type = KeyType(KeyType.ECDSA, "p521") # Update certificate request from zone zone_config = conn.read_zone_conf(zone) request.update_from_zone_config(zone_config) conn.request_cert(request, zone) # and wait for signing t = time.time() + 300 while time.time() < t: cert = conn.retrieve_cert(request) if cert: break else: time.sleep(5) # after that print cert and key print(cert.full_chain, request.private_key_pem, sep="\n") # and save into file f = open("/tmp/cert.pem", "w") f.write(cert.full_chain) f = open("/tmp/cert.key", "w") f.write(request.private_key_pem) f.close() if not isinstance(conn, FakeConnection): # fake connection doesn`t support certificate renewing print("Trying to renew certificate") new_request = CertificateRequest(cert_id=request.id, ) conn.renew_cert(new_request) while True: new_cert = conn.retrieve_cert(new_request) if new_cert: break else: time.sleep(5) print(new_cert.cert, new_request.private_key_pem, sep="\n") fn = open("/tmp/new_cert.pem", "w") fn.write(new_cert.cert) fn = open("/tmp/new_cert.key", "w") fn.write(new_request.private_key_pem) fn.close() if isinstance(conn, TPPConnection): revocation_req = RevocationRequest(req_id=request.id, comments="Just for test") print("Revoke", conn.revoke_cert(revocation_req)) print("Trying to sign CSR") csr_pem = open("example-csr.pem", "rb").read() csr_request = CertificateRequest(csr=csr_pem.decode()) # zone_config = conn.read_zone_conf(zone) # request.update_from_zone_config(zone_config) conn.request_cert(csr_request, zone) # and wait for signing while True: cert = conn.retrieve_cert(csr_request) if cert: break else: time.sleep(5) # after that print cert and key print(cert.full_chain) # and save into file f = open("/tmp/signed-cert.pem", "w") f.write(cert.full_chain) f.close()
def main(): # Get credentials from environment variables user = environ.get('TPP_USER') password = environ.get('TPP_PASSWORD') url = environ.get('TPP_TOKEN_URL') zone = environ.get("ZONE") fake = environ.get('FAKE') if fake: # If fake is true, test connection will be used. conn = Connection(fake=True) else: # If user and password are passed, you can get a new token from them. # If access_token and refresh_token are passed, there is no need for the username and password. # If only access_token is passed, the Connection will fail when token expires, as there is no way to refresh it. conn = venafi_connection(url=url, user=user, password=password, http_request_kwargs={"verify": False}) # If your TPP server certificate signed with your own CA, or available only via proxy, you can specify # a trust bundle using requests vars: # conn = token_connection(url=url, user=user, password=password, # http_request_kwargs={"verify": "/path-to/bundle.pem"}) request = CertificateRequest(common_name=random_word(10) + ".venafi.example.com") request.san_dns = [u"www.client.venafi.example.com", u"ww1.client.venafi.example.com"] request.email_addresses = [u"*****@*****.**", u"*****@*****.**"] request.ip_addresses = [u"127.0.0.1", u"192.168.1.1"] request.uniform_resource_identifiers = [u"http://wgtest.com",u"https://ragnartest.com"] request.user_principal_names = [u"*****@*****.**", u"*****@*****.**"] # Specify ordering certificates in chain. Root can be "first" or "last". By default its last. You also can # specify "ignore" to ignore chain (supported only for Platform). # To set Custom Fields for the certificate, specify an array of CustomField objects as name-value pairs #request.custom_fields = [ # CustomField(name="Cost Center", value="ABC123"), # CustomField(name="Environment", value="Production"), # CustomField(name="Environment", value="Staging") #] # configure key type, RSA example request.key_type = KeyType(KeyType.RSA, 2048) # or set it to ECDSA #request.key_type = KeyType(KeyType.ECDSA, "p521") # Update certificate request from zone zone_config = conn.read_zone_conf(zone) request.update_from_zone_config(zone_config) conn.request_cert(request, zone) # and wait for signing t = time.time() + 300 while time.time() < t: cert = conn.retrieve_cert(request) if cert: break else: time.sleep(5) # after that print cert and key print(cert.full_chain, request.private_key_pem, sep="\n") # and save into file f = open("/tmp/cert.pem", "w") f.write(cert.full_chain) f = open("/tmp/cert.key", "w") f.write(request.private_key_pem) f.close() if not isinstance(conn, FakeConnection): # fake connection doesn`t support certificate renewing print("Trying to renew certificate") new_request = CertificateRequest( cert_id=request.id, ) conn.renew_cert(new_request) while True: new_cert = conn.retrieve_cert(new_request) if new_cert: break else: time.sleep(5) print(new_cert.cert, new_request.private_key_pem, sep="\n") fn = open("/tmp/new_cert.pem", "w") fn.write(new_cert.cert) fn = open("/tmp/new_cert.key", "w") fn.write(new_request.private_key_pem) fn.close() if isinstance(conn, (TPPConnection or TPPTokenConnection)): revocation_req = RevocationRequest(req_id=request.id, comments="Just for test") print("Revoke", conn.revoke_cert(revocation_req)) print("Trying to sign CSR") csr_pem = open("example-csr.pem", "rb").read() csr_request = CertificateRequest(csr=csr_pem.decode()) # zone_config = conn.read_zone_conf(zone) # request.update_from_zone_config(zone_config) conn.request_cert(csr_request, zone) # and wait for signing while True: cert = conn.retrieve_cert(csr_request) if cert: break else: time.sleep(5) # after that print cert and key print(cert.full_chain) # and save into file f = open("/tmp/signed-cert.pem", "w") f.write(cert.full_chain) f.close()
def test_revoke_without_disable(self): req, cert = simple_enroll(self.tpp_conn, self.tpp_zone) rev_req = RevocationRequest(req_id=req.id, disable=False) self.tpp_conn.revoke_cert(rev_req) time.sleep(1) self.tpp_conn.renew_cert(req)
def main(): # Get credentials from environment variables token = environ.get('TOKEN') user = environ.get('TPPUSER') password = environ.get('TPPPASSWORD') url = environ.get('TPPURL') zone = environ.get("ZONE") # connection will be chosen automatically based on what arguments are passed, # If token is passed Venafi Cloud connection will be used. if user, password, and URL Venafi Platform (TPP) will # be used. If none, test connection will be used. conn = Connection(url=url, token=token, user=user, password=password) # If your TPP server certificate signed with your own CA or available only via proxy you can specify requests vars conn = Connection(url=url, token=token, user=user, password=password, http_request_kwargs={"verify": False}) print("Trying to ping url %s" % conn) status = conn.ping() print("Server online:", status) if not status: print('Server offline - exit') exit(1) request = CertificateRequest(common_name=randomword(10) + ".venafi.example.com") request.san_dns = [ "www.client.venafi.example.com", "ww1.client.venafi.example.com" ] if not isinstance(conn, CloudConnection): # Venafi Cloud doesn't support email or IP SANs in CSR request.email_addresses = [ "*****@*****.**", "*****@*****.**" ] request.ip_addresses = ["127.0.0.1", "192.168.1.1"] # Specify ordering certificates in chain. Root can be "first" or "last". By default it last. You also can # specify "ignore" to ignore chain (supported only for Platform). # make certificate request conn.request_cert(request, zone) # and wait for signing while True: cert = conn.retrieve_cert(request) if cert: break else: time.sleep(5) # after that print cert and key print(cert.full_chain, request.private_key_pem, sep="\n") # and save into file f = open("/tmp/cert.pem", "w") f.write(cert.full_chain) f = open("/tmp/cert.key", "w") f.write(request.private_key_pem) f.close() if not isinstance(conn, FakeConnection): # fake connection doesn`t support certificate renewing print("Trying to renew certificate") new_request = CertificateRequest(id=request.id, ) conn.renew_cert(new_request) while True: new_cert = conn.retrieve_cert(new_request) if new_cert: break else: time.sleep(5) print(new_cert.cert) fn = open("/tmp/new_cert.pem", "w") fn.write(new_cert.cert) if isinstance(conn, TPPConnection): revocation_req = RevocationRequest(id=request.id, comments="Just for test") print("Revoke", conn.revoke_cert(revocation_req))
def main(): # Get credentials from environment variables token = environ.get('CLOUD_APIKEY') user = environ.get('TPP_USER') password = environ.get('TPP_PASSWORD') url = environ.get('TPP_URL') zone = environ.get("ZONE") # connection will be chosen automatically based on what arguments are passed, # If token is passed Venafi Cloud connection will be used. if user, password, and URL Venafi Platform (TPP) will # be used. If none, test connection will be used. conn = Connection(url=url, token=token, user=user, password=password, http_request_kwargs={"verify": False}) # If your TPP server certificate signed with your own CA or available only via proxy you can specify requests vars # conn = Connection(url=url, token=token, user=user, password=password, # http_request_kwargs={"verify": "/path/to/trust/bundle.pem"}) request = CertificateRequest(common_name=randomword(10) + u".venafi.example.com") request.san_dns = [u"www.client.venafi.example.com", u"ww1.client.venafi.example.com"] if not isinstance(conn, CloudConnection): # Venafi Cloud doesn't support email or IP SANs in CSR request.email_addresses = [u"*****@*****.**", u"*****@*****.**"] request.ip_addresses = [u"127.0.0.1", u"192.168.1.1"] # Specify ordering certificates in chain. Root can be "first" or "last". By default it last. You also can # specify "ignore" to ignore chain (supported only for Platform). # To set Custom Fields for the certificate, specify an array of CustomField objects as name-value pairs #request.custom_fields = [ # CustomField(name="Cost Center", value="ABC123"), # CustomField(name="Environment", value="Production"), # CustomField(name="Environment", value="Staging") #] # Update certificate request from zone zone_config = conn.read_zone_conf(zone) request.update_from_zone_config(zone_config) conn.request_cert(request, zone) # and wait for signing while True: cert = conn.retrieve_cert(request) if cert: break else: time.sleep(5) # after that print cert and key print("\n".join([cert.full_chain, request.private_key_pem])) # and save into file f = open("/tmp/cert.pem", "w") f.write(cert.full_chain) f = open("/tmp/cert.key", "w") f.write(request.private_key_pem) f.close() if not isinstance(conn, FakeConnection): # fake connection doesn`t support certificate renewing print("Trying to renew certificate") new_request = CertificateRequest( cert_id=request.id, ) conn.renew_cert(new_request) while True: new_cert = conn.retrieve_cert(new_request) if new_cert: break else: time.sleep(5) print(new_cert.cert) fn = open("/tmp/new_cert.pem", "w") fn.write(new_cert.cert) if isinstance(conn, TPPConnection): revocation_req = RevocationRequest(req_id=request.id, comments="Just for test") print("Revoke", conn.revoke_cert(revocation_req))