2017-01-14 1 views
2
"""Python HTTPS server""" 

from http.server import HTTPServer, SimpleHTTPRequestHandler 
import ssl 

# https://stackoverflow.com/a/40822838/2715716 
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 : 2,846)를. 일치하지 않는 값을 알 수있는 방법이 있습니까?파이썬 SSL X509 : KEY_VALUES_MISMATCH

openssl verify -verbose -CAfile cert.pem을 사용하여 어떤 값이 불일치했는지 알았 으면 좋겠지 만 사용 방법을 알지 못하고 내가 작성한 명령은 일부 대화 형 프롬프트를 엽니 다.

인증서 또는 파이썬에 대해 아무것도 모릅니다. 나는 오직 python -m SimpleHTTPServer을 수행합니다. 이것은 내가 자체 서명 인증서를 얻으려고 시도하기 때문에 크롬은 localhost에서 작동하기 위해 일부 WebRTC 자료에 HTTPS를 사용해야하는 것에 대해 등을 돌릴 수있었습니다.

답변

4

지정한 개인 키가 사용하려는 인증서의 공개 키와 일치하지 않으면이 오류가 발생합니다. 사용하는 개인 키가 인증서의 공개 키와 일치하는지 확인하십시오. 이것은 다음과 같은 명령어의 출력을 비교해 보면됩니다 :

$ openssl x509 -noout -modulus -in cert.pem 
$ openssl rsa -noout -modulus -in key-no-pass.pem 
+0

이것은 흥미 롭습니다. 두 값은 동일하며 프로그램 적으로 검증되었습니다. –

+0

@ TomášHübelbauer : 키와 인증서를 정확하게 사용하여 코드의 주석에 쓰여진 것과 똑같이 생성됩니다.이 오류가 발생하지 않으며 서버가 정상적으로 작동합니다. 모듈러스를 확인한 것과 같은 키와 인증서를 프로그램에서 액세스 할 수 있습니까? –

+0

나는 4 배의 수표로 돌아와서 어떻게 든 다른 cert를 읽어야한다. -.- –

관련 문제