Changeset 2240


Ignore:
Timestamp:
07/03/07 08:36:50 (12 years ago)
Author:
pjkersha
Message:

python/ndg.security.server/ndg/security/server/AttAuthority/server-config.tac:
substituting pyOpenSSL with M2Crypto for SSL connection.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/AttAuthority/server-config.tac

    r2181 r2240  
    126126if srv.aa['useSSL']: 
    127127        # Use SSL connection 
    128         from twisted.internet import ssl 
    129          
    130         # Nb. ssl.DefaultOpenSSLContextFactory requires pyOpenSSL 
    131         ctxFactory = ssl.DefaultOpenSSLContextFactory(srv.aa['sslKeyFile'],  
    132                                                                                                   srv.aa['sslCertFile']) 
    133         port = internet.SSLServer(srv.aa['portNum'], siteFactory, ctxFactory) 
     128#       from twisted.internet import ssl 
     129#        
     130#       # Nb. ssl.DefaultOpenSSLContextFactory requires pyOpenSSL 
     131#       ctxFactory = ssl.DefaultOpenSSLContextFactory(srv.aa['sslKeyFile'],  
     132#                                                                                                 srv.aa['sslCertFile']) 
     133#       port = internet.SSLServer(srv.aa['portNum'], siteFactory, ctxFactory) 
     134 
     135        # Using M2Crypto ... 
     136    os.putenv("OPENSSL_ALLOW_PROXY_CERTS", "1") 
     137 
     138    import twisted.protocols.policies as policies 
     139    from M2Crypto import SSL 
     140    from M2Crypto.SSL import TwistedProtocolWrapper 
     141    from M2Crypto.SSL.TwistedProtocolWrapper import TLSProtocolWrapper 
     142 
     143    siteFactory.startTLS = True 
     144    siteFactory.sslChecker = SSL.Checker.Checker() 
     145 
     146    ctx = SSL.Context('sslv3') 
     147    ctx.set_cipher_list("NULL-MD5:ALL:!ADH:!EXP:@STRENGTH") 
     148    ctx.load_cert(CERTFILE, KEYFILE) 
     149    ctx.set_allow_unknown_ca(False) 
     150    ctx.set_verify(SSL.verify_peer, 10) 
     151 
     152    ctx.load_verify_locations(cafile=os.path.basename(srv.aa['caCertFile']),  
     153                                                  capath=os.path.dirname(srv.aa['caCertFile'])) 
     154 
     155    class ContextFactory: 
     156        def getContext(self): 
     157            return ctx 
     158 
     159    factory = policies.WrappingFactory(siteFactory) 
     160    factory.protocol.TLS = True 
     161    factory.protocol = lambda factory, wrappedProtocol: \ 
     162        TLSProtocolWrapper(factory, 
     163                           wrappedProtocol, 
     164                           startPassThrough=0, 
     165                           client=0, 
     166                           contextFactory=ContextFactory(), 
     167                           postConnectionCheck=None) 
     168 
     169    siteFactory = factory 
     170 
     171        port = internet.TCPServer(PORT, siteFactory) 
     172        port.CERTFILE = srv.aa['sslCertFile'] 
     173        port.KEYFILE = srv.aa['sslKeyFile'] 
     174        root.__class__.server = port 
    134175else:    
    135176        # Non-SSL 
Note: See TracChangeset for help on using the changeset viewer.