-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'feature/zia-ssl' into develop
- Loading branch information
Showing
4 changed files
with
174 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
ssl | ||
---------- | ||
|
||
The following methods allow for interaction with the ZIA SSL Inspection Settings API endpoints. | ||
|
||
Methods are accessible via ``zia.ssl`` | ||
|
||
.. _zia-ssl: | ||
|
||
.. automodule:: pyzscaler.zia.ssl | ||
:members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,153 @@ | ||
from restfly.endpoint import APIEndpoint | ||
|
||
|
||
class SSLInspectionAPI(APIEndpoint): | ||
def get_csr(self): | ||
""" | ||
Downloads a CSR after it has been generated. | ||
Returns: | ||
:obj:`str`: Base64 encoded PKCS#10 CSR text. | ||
Examples: | ||
Retrieve the CSR for use in another function. | ||
>>> csr = zia.ssl.get_csr() | ||
""" | ||
return self._get("sslSettings/downloadcsr", box=False).text | ||
|
||
def get_intermediate_ca(self): | ||
""" | ||
Returns information on the signed Intermediate Root CA certificate. | ||
Returns: | ||
:obj:`dict`: The Intermediate Root CA resource record. | ||
Examples: | ||
>>> pprint(zia.ssl.get_intermediate_ca()) | ||
""" | ||
return self._get("sslSettings/showcert") | ||
|
||
def generate_csr( | ||
self, | ||
cert_name: str, | ||
cn: str, | ||
org: str, | ||
dept: str, | ||
city: str, | ||
state: str, | ||
country: str, | ||
signature: str, | ||
): | ||
""" | ||
Generates a Certificate Signing Request. | ||
Args: | ||
cert_name (str): Certificate Name | ||
cn (str): Common Name | ||
org (str): Organisation | ||
dept (str): Department | ||
city (str): City | ||
state (str): State | ||
country (str): Country. Must be in the two-letter country code (ISO 3166-1 alpha-2) format and prefixed by | ||
`COUNTRY`. E.g.:: | ||
United States = US = COUNTRY_US | ||
Australia = AU = COUNTRY_AU | ||
signature (str): Certificate signature algorithm. Accepted values are `SHA_1` and `SHA_256`. | ||
Returns: | ||
:obj:`str`: The response code for the operation. | ||
Examples: | ||
>>> zia.ssl.generate_csr(cert_name='Example.com Intermediate CA 2', | ||
... cn='Example.com Intermediate CA 2', | ||
... org='Example.com', | ||
... dept='IT', | ||
... city='Sydney', | ||
... state='NSW', | ||
... country='COUNTRY_AU', | ||
... signature='SHA_256') | ||
""" | ||
payload = { | ||
"certName": cert_name, | ||
"commName": cn, | ||
"orgName": org, | ||
"deptName": dept, | ||
"city": city, | ||
"state": state, | ||
"country": country, | ||
"signatureAlgorithm": signature, | ||
} | ||
|
||
return self._post( | ||
"sslSettings/generatecsr", json=payload, box=False | ||
).status_code | ||
|
||
def upload_int_ca_cert(self, cert): | ||
""" | ||
Uploads a signed Intermediate Root CA certificate. | ||
Args: | ||
cert (tuple): The Intermediate Root CA certificate tuple in the following format, where `int_ca_pem` is a | ||
``File Object`` representation of the Intermediate Root CA certificate PEM file:: | ||
('filename.pem', int_ca_pem) | ||
Returns: | ||
:obj:`str`: The status code for the operation. | ||
Examples: | ||
Upload an Intermediate Root CA certificate from a file: | ||
>>> zia.ssl.upload_int_ca_cert(('int_ca.pem', open('int_ca.pem', 'rb'))) | ||
""" | ||
|
||
payload = {"fileUpload": cert} | ||
|
||
return self._post( | ||
"sslSettings/uploadcert/text", files=payload, box=False | ||
).status_code | ||
|
||
def upload_int_ca_chain(self, cert: tuple): | ||
""" | ||
Uploads the Intermediate Root CA certificate chain. | ||
Args: | ||
cert (tuple): The Intermediate Root CA chain certificate tuple in the following format, where | ||
`int_ca_chain_pem` is a ``File Object`` representation of the Intermediate Root CA certificate chain | ||
PEM file:: | ||
('filename.pem', int_ca_chain_pem) | ||
Returns: | ||
:obj:`str`: The status code for the operation | ||
Examples: | ||
Upload an Intermediate Root CA chain from a file: | ||
>>> zia.ssl.upload_int_ca_chain(('int_ca_chain.pem', open('int_ca_chain.pem', 'rb'))) | ||
""" | ||
|
||
payload = {"fileUpload": cert} | ||
|
||
return self._post( | ||
"sslSettings/uploadcertchain/text", files=payload, box=False | ||
).status_code | ||
|
||
def delete_int_chain(self): | ||
""" | ||
Deletes the Intermediate Root CA certificate chain. | ||
Returns: | ||
:obj:`str`: The status code for the operation. | ||
""" | ||
return self._delete("sslSettings/certchain", box=False).status_code |