Files
certserver/certclient.py

62 lines
1.4 KiB
Python
Raw Permalink Normal View History

2016-04-03 12:50:30 -07:00
#!/usr/bin/python3
import argparse
import requests
2016-04-05 06:42:42 +00:00
import sys
2016-04-03 12:50:30 -07:00
parser = argparse.ArgumentParser(description='certclient')
parser.add_argument(
'--ca-cert',
dest='ca_cert',
action='store',
required=True)
parser.add_argument(
'--client-cert',
dest='client_cert',
action='store',
required=True)
parser.add_argument(
'--client-key',
dest='client_key',
action='store',
required=True)
parser.add_argument(
'--server',
dest='server',
action='store',
required=True)
class CertClient(object):
2016-04-05 06:42:42 +00:00
def __init__(self, server, ca_cert, client_cert, client_key):
2016-04-03 12:50:30 -07:00
self._session = requests.Session()
self._session.verify = ca_cert
self._session.cert = (client_cert, client_key)
self._session.headers.update({
'Content-Type': 'application/x-pem-file',
})
2016-05-17 17:15:42 -07:00
self._server = 'https://%s' % server
2016-04-03 12:50:30 -07:00
2016-04-05 06:42:42 +00:00
def Request(self, csr):
resp = self._session.post(self._server, data=csr)
2016-04-07 03:43:11 +00:00
assert resp.status_code == requests.codes.ok, resp.status_code
assert resp.headers['Content-Type'] == 'application/x-pem-file', resp.headers['Content-Type']
2016-04-05 06:42:42 +00:00
return resp.text
2016-04-03 12:50:30 -07:00
def main():
client = CertClient(
FLAGS.server,
FLAGS.ca_cert,
FLAGS.client_cert,
2016-04-05 06:42:42 +00:00
FLAGS.client_key)
cert = client.Request(sys.stdin.read())
print(cert, end='')
2016-04-03 12:50:30 -07:00
if __name__ == '__main__':
2016-04-10 23:38:02 +00:00
FLAGS = parser.parse_args()
2016-04-03 12:50:30 -07:00
main()