我生成了这样的自签证书:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="introduction">
<h2>
<span class="inwrap"><span class="in1"><a href="#about-me">Graphic designer</a> that </span></span>
<span class="inwrap"><span class="in2">specializes in <a href="#days-of-ux">interactive</a></span></span>
<span class="inwrap"><span class="in3"> design and <a href="#struggle-magazine">print</a></span></span>
</h2>
</div>
文件cert.pem包含我的公共密钥。我希望从此文件中提取此公钥。
我尝试做的方式是:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
但是,运行代码后,出现此错误:
f = open('cert.pem', "rb")
pem_data = f.read()
f.close()
print(pem_data)
key = serialization.load_pem_public_key(pem_data, backend=default_backend())
结果是我无法提取公钥。
如何解决此问题以便提取公钥?
答案 0 :(得分:1)
文档中的注释
以----- BEGIN CERTIFICATE -----开头的PEM块不是公钥或私钥,而是X.509证书。您可以使用load_pem_x509_certificate()加载它,并使用Certificate.public_key提取公共密钥。
只需尝试一下:
from cryptography.hazmat.backends import default_backend
from cryptography import x509
f = open('cert.pem', "rb")
pem_data = f.read()
f.close()
key = x509.load_pem_x509_certificate(pem_data, backend=default_backend())
public_key = key.public_key()
答案 1 :(得分:0)
首先要检查加密库是否已安装:
pip install cryptography
您必须使用OpenSSL创建RSA密钥:
openssl genrsa -out jwt-key 4096
openssl rsa -in jwt-key -pubout > jwt-key.pub