Python SSL X509:KEY_VALUES_MISMATCH
Python SSL X509: KEY_VALUES_MISMATCH
"""Python HTTPS server"""
from http.server import HTTPServer, SimpleHTTPRequestHandler
import ssl
#
HTTPD = HTTPServer(('localhost', 4443), SimpleHTTPRequestHandler)
# Ubuntu on Windows:
# - Generate key:
# `openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365`
# - Strip passphrase:
# `openssl rsa -in key.pem -out key-no-pass.pem`
HTTPD.socket = ssl.wrap_socket(HTTPD.socket,
keyfile='key-no-pass.pem', certfile='cert.pem', server_side=True)
HTTPD.serve_forever()
上面给出了 ssl.SSLError: [X509: KEY_VALUES_MISMATCH] 键值不匹配 (_ssl.c:2846)。有没有办法知道不匹配的值?
我尝试使用 openssl verify -verbose -CAfile cert.pem
,希望它能告诉我哪些值不匹配,但我不知道如何使用它,我写的命令只会打开一些交互式提示。
我对证书或 Python 一无所知,我只知道 python -m SimpleHTTPServer
。这是我试图获得一个自签名证书,这样 Chrome 就可以摆脱对某些 WebRTC 东西必须使用 HTTPS 才能在 localhost
.
上工作的困扰
如果您指定的私钥与您尝试使用的证书中的 public 密钥不匹配,则会出现此错误。请检查您使用的私钥是否与证书中的 public 密钥匹配。这可以通过比较以下应该相同的命令的输出来完成:
$ openssl x509 -noout -modulus -in cert.pem
$ openssl rsa -noout -modulus -in key-no-pass.pem
"""Python HTTPS server"""
from http.server import HTTPServer, SimpleHTTPRequestHandler
import ssl
#
HTTPD = HTTPServer(('localhost', 4443), SimpleHTTPRequestHandler)
# Ubuntu on Windows:
# - Generate key:
# `openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365`
# - Strip passphrase:
# `openssl rsa -in key.pem -out key-no-pass.pem`
HTTPD.socket = ssl.wrap_socket(HTTPD.socket,
keyfile='key-no-pass.pem', certfile='cert.pem', server_side=True)
HTTPD.serve_forever()
上面给出了 ssl.SSLError: [X509: KEY_VALUES_MISMATCH] 键值不匹配 (_ssl.c:2846)。有没有办法知道不匹配的值?
我尝试使用 openssl verify -verbose -CAfile cert.pem
,希望它能告诉我哪些值不匹配,但我不知道如何使用它,我写的命令只会打开一些交互式提示。
我对证书或 Python 一无所知,我只知道 python -m SimpleHTTPServer
。这是我试图获得一个自签名证书,这样 Chrome 就可以摆脱对某些 WebRTC 东西必须使用 HTTPS 才能在 localhost
.
如果您指定的私钥与您尝试使用的证书中的 public 密钥不匹配,则会出现此错误。请检查您使用的私钥是否与证书中的 public 密钥匹配。这可以通过比较以下应该相同的命令的输出来完成:
$ openssl x509 -noout -modulus -in cert.pem
$ openssl rsa -noout -modulus -in key-no-pass.pem