Changeset 7770 for TI12-security


Ignore:
Timestamp:
09/12/10 13:23:42 (9 years ago)
Author:
pjkersha
Message:

Incomplete - task 20: Check for MyProxy? Logon bash script bug

  • New release 1.2.2 of MyProxyClient? fixes bug in server certificate subject name check.
Location:
TI12-security/trunk/MyProxyClient
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/MyProxyClient/myproxy/client.py

    r7554 r7770  
    5454    PARSER_RE_STR = '/(%s)=' % '|'.join(DN_LUT.keys() + DN_LUT.values()) 
    5555    PARSER_RE = re.compile(PARSER_RE_STR)     
    56          
     56    SERVER_CN_PREFIXES = ('host/', 'myproxy/', '') 
     57     
    5758    SERVER_CN_PREFIX = 'host/' 
    5859 
    59     __slots__ = ('__hostname', '__cnPrefix', '__certDN') 
    60      
    61     def __init__(self,  
    62                  certDN=None, 
    63                  hostname=None, 
    64                  cnPrefix=SERVER_CN_PREFIX): 
     60    __slots__ = ('__hostname', '__certDN') 
     61     
     62    def __init__(self, certDN=None, hostname=None): 
    6563        """Override parent class __init__ to enable setting of certDN 
    6664        setting 
     
    7169        where the hostname is not fully qualified 
    7270        """ 
    73         self.__cnPrefix = None 
    7471        self.__certDN = None 
    7572        self.__hostname = None 
     
    8077        if hostname is not None: 
    8178            self.hostname = hostname 
    82              
    83         self.cnPrefix = cnPrefix 
    8479         
    8580    def __call__(self, connection, peerCert, errorStatus, errorDepth,  
     
    132127                    return False 
    133128                     
    134                 cn = self.cnPrefix + self.hostname 
    135                 if peerCertSubj.commonName == cn: 
     129                acceptableCNs = [pfx + self.hostname  
     130                                 for pfx in self.__class__.SERVER_CN_PREFIXES] 
     131                if peerCertSubj.commonName in acceptableCNs: 
    136132                    return preverifyOK 
    137133                else: 
    138134                    log.error('Peer certificate CN %r doesn\'t match the ' 
    139                               'expected CN %r', peerCertSubj.commonName, cn) 
     135                              'expected CN %r', peerCertSubj.commonName,  
     136                              acceptableCNs) 
    140137                    return False 
    141138            else: 
     
    192189                        fset=_setHostname, 
    193190                        doc="hostname of MyProxy server") 
    194      
    195     def _getCNPrefix(self): 
    196         """References SSL Certificate verification object property!""" 
    197         return self.__cnPrefix 
    198      
    199     def _setCNPrefix(self, val): 
    200         """Sets SSL Certificate verification object property!""" 
    201         if not isinstance(val, basestring): 
    202             raise TypeError("Expecting string type for hostname " 
    203                                  "attribute") 
    204         self.__cnPrefix = val 
    205      
    206     cnPrefix = property(fget=_getCNPrefix, 
    207                         fset=_setCNPrefix, 
    208                         doc="Prefix for MyProxy Server Certificate " 
    209                             "Distinguished Name CommonName field; usually set " 
    210                             "to 'host/' for Globus host certificates") 
    211191                     
    212192     
     
    589569                        doc="Distinguished Name for MyProxy Server " 
    590570                            "Certificate") 
    591      
    592     def _getServerCNPrefix(self): 
    593         """References SSL Certificate verification object property!""" 
    594         return self.__serverSSLCertVerify.cnPrefix 
    595      
    596     def _setServerCNPrefix(self, val): 
    597         """Sets SSL Certificate verification object property!""" 
    598         self.__serverSSLCertVerify.cnPrefix = val 
    599      
    600     serverCNPrefix = property(fget=_getServerCNPrefix, 
    601                               fset=_setServerCNPrefix, 
    602                               doc="Prefix for MyProxy Server Certificate " 
    603                                   "Distinguished Name CoomonName field; " 
    604                                   "usually set to host/ for Globus host " 
    605                                   "certificates") 
    606571         
    607572    def _getOpenSSLConfFilePath(self): 
  • TI12-security/trunk/MyProxyClient/myproxy/test/myProxyClient.cfg

    r7554 r7770  
    2323#serverDN=/O=NDG/OU=Raphael/CN=raphael 
    2424 
    25 # MyProxy Server CommonName prefix e.g. 'myproxy/' in order to match certificate 
    26 # CN 'myproxy/<fqdn>'.  The default value is 'host/' 
    27 serverCNPrefix= 
    28  
    2925# This directory path is used to locate the OpenSSL configuration file 
    3026#  
  • TI12-security/trunk/MyProxyClient/myproxy/test/myProxyClientTest.cfg

    r7554 r7770  
    2727username: testuser 
    2828passphrase: testpassword 
     29 
    2930# Locations for output proxy cert and key files 
    3031proxyCertFileOut: $MYPROXYCLIENT_UNITTEST_DIR/proxy.crt 
  • TI12-security/trunk/MyProxyClient/myproxy/test/test_myproxyclient.py

    r7554 r7770  
    323323            # This would normally called implicitly during the SSL handshake 
    324324            status = client.serverSSLCertVerify(*args) 
    325             self.assert_(status == errorStatus) 
    326              
    327             # Won't match because the default 'host/' CN prefix is set 
    328             client.hostname = 'localhost' 
    329             status = client.serverSSLCertVerify(*args) 
    330             self.assert_(status == errorStatus) 
    331              
    332             # Should now match 
    333             client.serverCNPrefix = '' 
    334             status = client.serverSSLCertVerify(*args) 
    335325            self.assert_(status == successStatus) 
    336326             
  • TI12-security/trunk/MyProxyClient/setup.py

    r7731 r7770  
    2828setup( 
    2929    name =              'MyProxyClient', 
    30     version =           '1.2.1', 
     30    version =           '1.2.2', 
    3131    description =       'MyProxy Client', 
    3232    long_description =  '''\ 
Note: See TracChangeset for help on using the changeset viewer.