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)
|
2016-04-04 22:44:13 -07:00
|
|
|
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()
|