09-*_*-00 2 python ssl cryptography
完整代码如下。
\n from cryptography.hazmat.backends import default_backend\nfrom cryptography.hazmat.primitives import serialization\nfrom cryptography.hazmat.primitives.asymmetric import rsa\nfrom cryptography import x509\nfrom cryptography.x509.oid import NameOID\nfrom cryptography.hazmat.primitives import hashes\nimport datetime\nencryptedpassword = b"yokedicicaner31" #Kullan\xc4\xb1c\xc4\xb1 inputu al, yokedicicaner31, kopyala yap\xc4\xb1\xc5\x9ft\xc4\xb1r.\nkey = rsa.generate_private_key(public_exponent=65537,key_size=2048,backend=default_backend())\nwith open("rsakey.pem","wb") as f: \n f.write(key.private_bytes(encoding=serialization.Encoding.PEM,\n format = serialization.PrivateFormat.TraditionalOpenSSL,\n encryption_algorithm=serialization.BestAvailableEncryption(encryptedpassword)))\n\nsubject = issuer = x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME,u"TR"),\n x509.NameAttribute(NameOID.LOCALITY_NAME,u"damacaner"),\n x509.NameAttribute(NameOID.ORGANIZATION_NAME, u"damacana ve erikli su sevenler derne\xc4\x9fi"),\n x509.NameAttribute(NameOID.COMMON_NAME, u"damacaner.tr")])\ncert = x509.CertificateBuilder().subject_name(subject).issuer_name(issuer).public_key(key.public_key()).serial_number(x509.random_serial_number()).not_valid_before(datetime.datetime.utcnow()).not_valid_after(datetime.datetime.utcnow() + datetime.timedelta(days=10)\n ).add_extension(x509.SubjectAlternativeName([x509.DNSName(u"localhost")]),critical=False).sign(key, hashes.SHA256(), default_backend())\nwith open("certificate.pem","wb") as f:\n f.write(cert.public_bytes(serialization.Encoding.PEM))\nRun Code Online (Sandbox Code Playgroud)\n完整输出如下。
\nunable to load X509 request\n34359836736:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:\n Expecting: CERTIFICATE REQUEST\nRun Code Online (Sandbox Code Playgroud)\n我尝试使用“openssl req -text -incertificate.pem”命令打开名为certificate.pem的证书文件,但它抛出了我在输出中编写的错误。当我使用 x509.CertificateSigningRequestBuilder 构建证书时,没有发生此错误,但当我尝试使用 x509.CertificateBuilder 构建自签名证书时,出现错误。感谢您的所有帮助。
\n目前尚不清楚您在这里要做什么,因为您只描述了遇到的问题,而不是最终要执行的任务。反正 ...
openssl req -text -in 证书.pem
该行需要一个证书请求。您的代码会创建一个证书 (CertificateBuilder),而不是证书请求。后者将使用 x509.CertificateSigningRequestBuilder 创建,正如预期的那样,它可以与openssl req上面的命令一起使用。
...当我尝试使用 x509.CertificateBuilder 构建自签名证书时出现错误。
构建自签名证书时,您似乎没有收到错误,即构建证书的代码有效。相反,将其与 一起使用时会出现错误openssl req。由于您没有提供证书请求而是提供了证书,因此会出现此错误。对于证书,请使用x509openssl 命令,而不是req:
openssl x509 -text -in certificate.pem
Run Code Online (Sandbox Code Playgroud)