AWS的ACM(Amazon Certificate Manager)允许您为您的应用程序或网站生成免费的SSl/TLS证书,但需要连接到您已经托管在AWS上的关联的域名。因此,若没有域名,这个方式将不起作用,因为SSL证书无法与您的站点或应用程序进行关联。
如果您需要在未使用域名的情况下获得SSL证书,您需要转向使用其他证书颁发机构,您需要向该机构支付费用才能获得SSL证书。以下是使用授权CA(Certification Authority)证书的Python示例代码:
import datetime
import OpenSSL.crypto as crypto
# Create a key pair
k = crypto.PKey()
k.generate_key(crypto.TYPE_RSA, 2048)
# Create a self-signed certificate
cert = crypto.X509()
cert.get_subject().C = "US"
cert.get_subject().ST = "WA"
cert.get_subject().L = "Seattle"
cert.get_subject().O = "My Org"
cert.get_subject().OU = "My Unit"
cert.get_subject().CN = "localhost"
cert.set_serial_number(1000)
cert.gmtime_adj_notBefore(0)
cert.gmtime_adj_notAfter(365*2*24*60*60)
cert.set_issuer(cert.get_subject())
cert.set_pubkey(k)
cert.sign(k, 'sha256')
# Save certificate in PEM format
with open("cert.pem", "wt") as f:
f.write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert).decode("utf-8"))
# Save private key in PEM format
with open("key.pem", "wt") as f:
f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, k).decode("utf-8"))
该示例使用Python中的OpenSSL模块创建了一个自签名证书。您可以将此示例代码用于生成自签名证书,以便在没有域名的情况下获得SSL证书。请注意,浏览器可能会抱怨您使用的证书不受信任。若您需要正式通信需要使用授权的CA证书。