Ssl Python3 Twisted HTTPS代理:错误证书/Firefox-严格传输安全(HSTS)

Ssl Python3 Twisted HTTPS代理:错误证书/Firefox-严格传输安全(HSTS),ssl,proxy,twisted,Ssl,Proxy,Twisted,我正试图整合一个“中间人”代理服务器,它在localhost:8080上提供服务,用twisted拦截数据 但是我在浏览器中得到了这个响应 未连接:潜在的安全问题 Firefox检测到潜在的安全威胁,并没有继续攻击,因为该网站需要安全连接 有一个称为HTTP严格传输安全性(HSTS)的安全策略,这意味着Firefox只能安全地连接到它。您不能添加访问此网站的异常 我的日志告诉我 CONNECTION LOST [Failure instance: Traceback: <class '

我正试图整合一个“中间人”代理服务器,它在localhost:8080上提供服务,用twisted拦截数据


但是我在浏览器中得到了这个响应

未连接:潜在的安全问题 Firefox检测到潜在的安全威胁,并没有继续攻击,因为该网站需要安全连接

有一个称为HTTP严格传输安全性(HSTS)的安全策略,这意味着Firefox只能安全地连接到它。您不能添加访问此网站的异常


我的日志告诉我

CONNECTION LOST [Failure instance: Traceback: <class 'OpenSSL.SSL.Error'>: [('SSL routines', 'ssl3_read_bytes', 'sslv3 alert bad certificate')]

我使用的ConnectProxy协议来自此回购协议:


有人能告诉我应该如何生成这些证书吗?我拥有的是自签名并导入firefox。我是否也应该将它们存储在/etc/ssl/private和/etc/ssl/cert中?

TLS和HSTS的目的是阻止别人做你正在做的事情。Firefox正在努力只接受真正的www.google.com证书,而不是您可能提供的任何替代证书。
def main():
    from connectproxy.connectproxy import ConnectProxy
    import twisted.web.http
    import twisted.internet
    from twisted.internet import ssl
    from OpenSSL import crypto
    from twisted.python import log
    import sys

    # Start logging
    log.startLogging(sys.stdout)

    factory = twisted.web.http.HTTPFactory()
    factory.protocol = ConnectProxy

    with open('keys/cert.pem', 'rb') as fp:
        ssl_cert = fp.read()
    with open('keys/key.pem', 'rb') as fp:
        ssl_key = fp.read()

    certificate = ssl.PrivateCertificate.load(ssl_cert, ssl.KeyPair.load(ssl_key, crypto.FILETYPE_PEM), crypto.FILETYPE_PEM)
    
    twisted.internet.reactor.listenSSL(8080, factory, certificate.options())
    twisted.internet.reactor.run()


if __name__ == '__main__':
    main()