47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
#!python3
|
|
# dlitz 2025
|
|
|
|
import fcntl
|
|
import re
|
|
import subprocess
|
|
from contextlib import ExitStack, contextmanager
|
|
|
|
from .ssl_util import SSLUtil
|
|
|
|
if __name__ == '__main__':
|
|
from argparse import ArgumentParser
|
|
from pathlib import Path
|
|
import getpass
|
|
import sys
|
|
|
|
parser = ArgumentParser(
|
|
description="push TLS privkey & certificate to MikroTik RouterOS router"
|
|
)
|
|
parser.add_argument(
|
|
"-k", "--privkey", type=Path, required=True, help="private key file"
|
|
)
|
|
parser.add_argument("--cert", type=Path, required=True, help="certificate file")
|
|
parser.add_argument(
|
|
"--chain", type=Path, help="separate certificate chain file (optional)"
|
|
)
|
|
parser.add_argument("-o", "--output", type=Path, help="output file")
|
|
args = parser.parse_args()
|
|
|
|
privkey_data = args.privkey.read_text()
|
|
cert_data = args.cert.read_text()
|
|
chain_data = args.chain.read_text() if args.chain is not None else None
|
|
|
|
key_passphrase = getpass.getpass("set the passphrase:")
|
|
|
|
pkcs12_data = SSLUtil().export_pkcs12(
|
|
privkey_data=privkey_data,
|
|
cert_data=cert_data,
|
|
chain_data=chain_data,
|
|
passphrase=key_passphrase,
|
|
)
|
|
|
|
if args.output:
|
|
args.output.write_bytes(pkcs12_data)
|
|
else:
|
|
sys.stdout.buffer.write(pkcs12_data)
|