mirror of
https://github.com/ansible/awx.git
synced 2026-04-05 10:09:20 -02:30
39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
# Copyright (c) 2015 Ansible, Inc.
|
|
# All Rights Reserved
|
|
import datetime
|
|
from django.utils.encoding import smart_str
|
|
|
|
from cryptography.hazmat.backends import default_backend
|
|
from cryptography.hazmat.primitives import serialization
|
|
from cryptography.hazmat.primitives.asymmetric import rsa
|
|
from django.conf import settings
|
|
from django.core.management.base import BaseCommand
|
|
|
|
from awx.conf.models import Setting
|
|
|
|
|
|
class Command(BaseCommand):
|
|
"""Generate and store a randomized RSA key for SSH traffic to isolated instances"""
|
|
|
|
help = 'Generates and stores a randomized RSA key for SSH traffic to isolated instances'
|
|
|
|
def handle(self, *args, **kwargs):
|
|
if getattr(settings, 'AWX_ISOLATED_PRIVATE_KEY', False):
|
|
print(settings.AWX_ISOLATED_PUBLIC_KEY)
|
|
return
|
|
|
|
key = rsa.generate_private_key(public_exponent=65537, key_size=4096, backend=default_backend())
|
|
Setting.objects.create(
|
|
key='AWX_ISOLATED_PRIVATE_KEY',
|
|
value=key.private_bytes(
|
|
encoding=serialization.Encoding.PEM, format=serialization.PrivateFormat.TraditionalOpenSSL, encryption_algorithm=serialization.NoEncryption()
|
|
),
|
|
).save()
|
|
pemfile = Setting.objects.create(
|
|
key='AWX_ISOLATED_PUBLIC_KEY',
|
|
value=smart_str(key.public_key().public_bytes(encoding=serialization.Encoding.OpenSSH, format=serialization.PublicFormat.OpenSSH))
|
|
+ " generated-by-awx@%s" % datetime.datetime.utcnow().isoformat(),
|
|
)
|
|
pemfile.save()
|
|
print(pemfile.value)
|