Changeset 3232 for branches/2.2/security/crl_admin
- Timestamp:
- 09/13/10 15:01:56 (14 years ago)
- Location:
- branches/2.2/security/crl_admin
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2/security/crl_admin/crl_admin.conf
r1174 r3232 1 # Lista das urls apontando CRLs , e onde colocar(path) os arquivos obtidos....1 # Lista das urls apontando CRLs .... 2 2 # Formato: 3 # url ;path ( o path deve terminar com uma /)4 http://ccd.serpro.gov.br/lcr/serproacfv1.crl ;/var/www/expresso/security/crls/5 http://ccd.serpro.gov.br/lcr/serproacfv2.crl ;/var/www/expresso/security/crls/6 http://ccd.serpro.gov.br/lcr/ACPRv1.crl ;/var/www/expresso/security/crls/7 http://ccd.serpro.gov.br/lcr/ACPRv2.crl ;/var/www/expresso/security/crls/8 http://ccd.serpro.gov.br/lcr/ ACSERPRORFB.crl;/var/www/expresso/security/crls/9 http://acraiz.icpbrasil.gov.br/LCRacraizv1.crl ;/var/www/expresso/security/crls/10 http://acraiz.icpbrasil.gov.br/LCRacraiz.crl ;/var/www/expresso/security/crls/11 http://ccd.serpro.gov.br/lcr/acserpro.crl ;/var/www/expresso/security/crls/12 http://ccd.serpro.gov.br/lcr/acserprojus.crl ;/var/www/expresso/security/crls/13 http://ccd.serpro.gov.br/lcr/acserprorfb.crl ;/var/www/expresso/security/crls/14 http://ccd.serpro.gov.br/lcr/acserprosrf.crl ;/var/www/expresso/security/crls/15 http://icp.caixa.gov.br/repositorio/ACCAIXA1.crl ;/var/www/expresso/security/crls/16 http://icp.caixa.gov.br/repositorio/ACCAIXAPF1.crl ;/var/www/expresso/security/crls/17 http://icp.caixa.gov.br/repositorio/ACCAIXAPJ1.crl ;/var/www/expresso/security/crls/18 http://icp.caixa.gov.br/repositorio/ACCAIXAJUS.crl ;/var/www/expresso/security/crls/19 http://ccdhom.serpro.gov.br/lcr/homacraizv2.crl ;/var/www/expresso/security/crls/20 http://ccdhom.serpro.gov.br/lcr/homserprov2.crl ;/var/www/expresso/security/crls/21 http://ccdhom.serpro.gov.br/lcr/acserprorfbv1.crl ;/var/www/expresso/security/crls/3 # url ( url apontando a crl - uma por linha) 4 http://ccd.serpro.gov.br/lcr/serproacfv1.crl 5 http://ccd.serpro.gov.br/lcr/serproacfv2.crl 6 http://ccd.serpro.gov.br/lcr/ACPRv1.crl 7 http://ccd.serpro.gov.br/lcr/ACPRv2.crl 8 http://ccd.serpro.gov.br/lcr/acserprorfb.crl 9 http://acraiz.icpbrasil.gov.br/LCRacraizv1.crl 10 http://acraiz.icpbrasil.gov.br/LCRacraiz.crl 11 http://ccd.serpro.gov.br/lcr/acserpro.crl 12 http://ccd.serpro.gov.br/lcr/acserprojus.crl 13 http://ccd.serpro.gov.br/lcr/acserprorfb.crl 14 http://ccd.serpro.gov.br/lcr/acserprosrf.crl 15 http://icp.caixa.gov.br/repositorio/ACCAIXA1.crl 16 http://icp.caixa.gov.br/repositorio/ACCAIXAPF1.crl 17 http://icp.caixa.gov.br/repositorio/ACCAIXAPJ1.crl 18 http://icp.caixa.gov.br/repositorio/ACCAIXAJUS.crl 19 http://ccdhom.serpro.gov.br/lcr/homacraizv2.crl 20 http://ccdhom.serpro.gov.br/lcr/homserprov2.crl 21 http://ccdhom.serpro.gov.br/lcr/acserprorfbv1.crl -
branches/2.2/security/crl_admin/crl_admin.py
r1174 r3232 2 2 # -*- coding: utf-8 -*- 3 3 4 import os, popen2, fcntl, select, time 4 import os, popen2, fcntl, select, time, sys 5 5 from string import replace 6 7 # Lista com as urls das CRLs, e onde colocar(path) os arquivos obtidos .... 8 CRL_urls = [] 9 Confs = {} 10 11 #Confs['dirtemp'] # path para a pasta temp para conter arquivos auxiliares.... 12 #Confs['CAfile'] # Arquivo com cadeia dos certificados das CAs, para verificacao das CRLs. 13 #Confs['CRLs'] # path para a pasta onde as CRLs sao salvas 14 #Confs['arquivos_crls'] # path para o arquivo de configuracao contendo urls das crls e paths onde serao baixadas... 15 #Confs['log'] # Arquivo onde sera grada log de execucao da qtualizacao/verificacao das crls. 16 # Deixe 'log' igual a vazio para ver as msgs de execucao no terminal....... 17 #Confs['lenMax'] # Tamanho maximo do arquivo de log de atualização das crls antes do rotate..... 18 #Confs['bkpNum'] # Numero de arquivos de log de atualização das crls mantidos pelo rotate.... 19 20 def ler_arquivo_com_configuracao(): 21 # Esta funcao le o arquivo com configuracao geral(linguagen php) para tratar certs. 22 import os,sys 23 BASE = os.path.realpath(__file__).split(os.sep + 'security')[0] # BASE igual a pasta inicial(raiz) do Expresso 24 os.chdir(BASE + '/security/classes') 25 # Esta funcao le o arquivo com configuracao geral(linguagen php) para tratar certs. 26 conf_file = BASE + '/security/classes/Verifica_Certificado_conf.php' 27 e = open(conf_file) 28 r = e.read() 29 aux1 = r.split('\n') 30 # primeiro recupera BASE ... 31 for linha in aux1: 32 linha = linha.strip() 33 if linha[0:16] == "$GLOBALS['BASE']": 34 Confs['BASE'] = BASE 35 break 36 # Agora os demais ... 37 for linha in aux1: 38 linha = linha.strip() 39 if linha[0:10] == "$GLOBALS['": 40 if linha[0:16] != "$GLOBALS['BASE']": 41 aux2 = linha.split(';') 42 if aux2[0] != '': 43 aux2a = aux2[0].split("'") 44 aux3 = aux2[0].split("=") 45 Confs[aux2a[1]] = aux3[1].replace(' ','') 46 # Finalmente trata as ocorrencias de BASE ... 47 for chave in Confs.keys(): 48 if chave != 'BASE': 49 aux = Confs[chave].replace("$GLOBALS['BASE'].",Confs['BASE']) 50 Confs[chave] = aux.replace("'",'') 51 return 52 53 def ler_conf(): 54 # Esta funcao le o arquivo passado como parametro e gera a lista CRL_urls. 55 # O arquivo he esperado no formato: 56 # url ( url = aponta onde buscar a crl, uma por linha. 57 e = open(Confs['arquivos_crls']) 58 r = e.read() 59 aux1 = r.split('\n') 60 for linha in aux1: 61 if linha[0:1] != '#': 62 if linha.strip() != '': 63 # Faz split com ';' para manter compatibilidade com arquivos formato antigo ... 64 CRL_urls.append([linha.split(';')[0].strip(),Confs['CRLs']]) 65 return 66 6 67 7 68 theOutput = [] 8 69 9 def fazlog( dados):10 11 12 13 logging.info(x)70 def fazlog(mL,dados): 71 for i in dados: 72 aux = i.split('\n') 73 for x in aux: 74 mL.info(x) 14 75 15 76 def makeNonBlocking(fd): 16 fl = fcntl.fcntl(fd, fcntl.F_GETFL)17 try:18 fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NDELAY) 19 except AttributeError:20 fcntl.fcntl(fd, fcntl.F_SETFL, fl | fcntl.FNDELAY) 77 fl = fcntl.fcntl(fd, fcntl.F_GETFL) 78 try: 79 fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NDELAY) 80 except AttributeError: 81 fcntl.fcntl(fd, fcntl.F_SETFL, fl | fcntl.FNDELAY) 21 82 22 83 def ExeCmd(command): … … 55 116 # a cadeia de certificados para verificar as crls(CAfile). 56 117 # Apos o import, executar a funcao ler_conf() ..... 57 from crl_admin_confg import * 118 #from crl_admin_confg import * 119 ler_arquivo_com_configuracao() 120 try: 121 ler_arquivo_com_configuracao() 122 except: 123 print 'Erro lendo arquivos de configuracao(ERR-01X)'; 124 sys.exit(1); 58 125 126 try: 127 # A execucao da funcao a seguir carrega a lista das CRLs (CRL_urls) que devem ser processadas... 128 ler_conf() 129 except: 130 print 'Erro lendo arquivos de configuracao(ERR-02X)'; 131 sys.exit(1); 132 133 CAfile = Confs['CAs'] 134 CRLs = Confs['CRLs'] 135 arquivo = Confs['arquivos_crls'] 136 log = Confs['log'] # Deixe log = '' para saida da log na console ..... 137 lenMax = int(Confs['lenMax']) # Tamanho maximo do arquivo de log para iniciar o rotate.... 138 bkpNum = int(Confs['bkpNum']) # Número de arquivos de log mantidos pelo rotate.... 59 139 import logging 140 import logging.handlers 60 141 61 # Configura como sera a log ..... 62 logging.basicConfig(level=logging.INFO, 63 format='%(asctime)s %(levelname)s %(message)s', 64 filename=log, 65 filemode='a') 142 # Prepara para fazer a log das atualizações das crls ... 143 fm = logging.Formatter('%(asctime)s %(levelname)s %(message)s') 144 mL = logging.getLogger('ML') 145 mL.setLevel(logging.DEBUG) 146 hd = logging.handlers.RotatingFileHandler(log, mode='a', maxBytes=lenMax, backupCount=bkpNum) 147 hd.setFormatter(fm) 148 mL.addHandler(hd) 66 149 67 # A execucao da funcao a seguir carrega a lista das CRLs (CRL_urls) que devem ser processadas... 68 ler_conf() 150 if len(sys.argv) > 1: 151 if os.path.isfile(sys.argv[1]): 152 Confs['arquivos_crls'] = sys.argv[1] 153 else: 154 mL.critical('Erro lendo arquivo de configuracao' + sys.argv[1] + ': Nao localizado.\n') 155 sys.exit(2) 156 157 mL.info('Processando arquivo de urls para obter crls: ' +Confs['arquivos_crls'] + ' .') 69 158 70 159 for crl in CRL_urls: 71 arquivo = crl[1] + os.path.split(crl[0])[1] 72 url = crl[0] 73 74 # Obtendo o arquivo com wget ... 75 logging.info('Buscando a CRL: ' + url) 76 saida_wget = ExeCmd("wget " + url + " -O " + arquivo) 77 78 # Abaixo estamos comandando a execucao "openssl crl" passando o arquivo crl . 79 # O resultado esta em saida. Tem de ser 'verify OK' . 80 if os.path.exists(arquivo) and os.path.getsize(arquivo) > 0: 81 logging.info('Verificando ' + arquivo + '(' + str(os.path.getsize(arquivo)) + ' Bytes)') 82 saida = ExeCmd('openssl crl -CAfile ' + CAfile + ' -in ' + arquivo + ' -inform DER -noout') 83 # usa a funcao fazlog porque saida he um array..... 84 fazlog(saida) 85 try: 86 aux1 = replace(saida[1],'\n','') 87 if not aux1 == 'verify OK': 88 logging.critical('Erro verificando a CRL ' + arquivo + '\n') 89 try: 90 os.remove(arquivo) 91 except: 92 pass 93 continue 94 # A crl foi verificada e est OK.... 95 # Atuaiza a data do arquivo... 96 saida = ExeCmd('touch ' + arquivo) 97 except: 98 logging.critical('Erro processando o status da verificacao da CRL ' + arquivo + '\n') 99 try: 100 os.remove(arquivo) 101 except: 102 pass 103 continue 104 else: 105 # usa a funcao fazlog porque saida_wget he um array..... 106 fazlog(saida_wget) 107 logging.critical('Nao foi possivel obter a CRL ' + url + '\n') 108 try: 109 os.remove(arquivo) 110 except: 111 pass 112 160 arquivo = crl[1].strip() + os.path.split(crl[0])[1].strip() 161 url = crl[0].strip() 162 # Obtendo o arquivo com wget ... 163 mL.info('Buscando a CRL: ' + url) 164 saida_wget = ExeCmd("wget --timeout=10 --tries=1 " + url + " -O " + arquivo) 165 # Abaixo estamos comandando a execucao "openssl crl" passando o arquivo crl . 166 # O resultado esta em saida. Tem de ser 'verify OK' . 167 if os.path.exists(arquivo) and os.path.getsize(arquivo) > 0: 168 mL.info('Verificando ' + arquivo + '(' + str(os.path.getsize(arquivo)) + ' Bytes)') 169 saida = ExeCmd('openssl crl -CAfile ' + CAfile + ' -in ' + arquivo + ' -inform DER -noout') 170 # usa a funcao fazlog porque saida he um array..... 171 fazlog(mL,saida) 172 try: 173 aux1 = replace(saida[1],'\n','') 174 if not aux1 == 'verify OK': 175 mL.critical('Erro verificando a CRL ' + arquivo + '\n') 176 try: 177 os.remove(arquivo) 178 except: 179 pass 180 continue 181 # A crl foi verificada e est OK.... 182 # Atuaiza a data do arquivo... 183 saida = ExeCmd('touch ' + arquivo) 184 except: 185 mL.critical('Erro processando o status da verificacao da CRL ' + arquivo + '\n') 186 try: 187 os.remove(arquivo) 188 except: 189 pass 190 continue 191 else: 192 # usa a funcao fazlog porque saida_wget he um array..... 193 fazlog(mL,saida_wget) 194 mL.critical('Nao foi possivel obter a CRL ' + url + '\n') 195 try: 196 os.remove(arquivo) 197 except: 198 pass -
branches/2.2/security/crl_admin/crl_admin_confg.py
r1174 r3232 3 3 # Lista com as urls das CRLs, e onde colocar(path) os arquivos obtidos .... 4 4 CRL_urls = [] 5 Confs = {} 5 6 6 # arquivo : path para o arquivo de configuracao contendo urls das crls e paths onde serao baixadas... 7 arquivo = '/var/www/expresso/security/crl_admin/crl_admin.conf' 8 9 # Arquivo onde sera grada log de execucao da qtualizacao/verificacao das crls. 10 log = '/var/www/expresso/logs/arquivo_crls.log' 11 12 # Deixe 'log' igual a vazio para ver as msgs de execução no terminal....... 13 #log = '' 14 15 # Arquivo com cadeia dos certificados das CAs, para verificacao das CRLs. 16 CAfile = '/var/www/expresso/security/cas/todos.cer' 7 #Confs['dirtemp'] # path para a pasta temp para conter arquivos auxiliares.... 8 #Confs['CAfile'] # Arquivo com cadeia dos certificados das CAs, para verificacao das CRLs. 9 #Confs['CRLs'] # path para a pasta onde as CRLs sao salvas 10 #Confs['arquivos_crls'] # path para o arquivo de configuracao contendo urls das crls e paths onde serao baixadas... 11 #Confs['log'] # Arquivo onde sera grada log de execucao da qtualizacao/verificacao das crls. 12 # Deixe 'log' igual a vazio para ver as msgs de execucao no terminal....... 13 def ler_arquivo_com_configuracao(): 14 # Esta funcao le o arquivo com configuracao geral(linguagen php) para tratar certs. 15 import os,sys 16 BASE = os.path.realpath(__file__).split(os.sep + 'security')[0] # BASE igual a pasta inicial(raiz) do Expresso 17 os.chdir(BASE + '/security/classes') 18 # Esta funcao le o arquivo com configuracao geral(linguagen php) para tratar certs. 19 conf_file = BASE + '/security/classes/Verifica_Certificado_conf.php' 20 e = open(conf_file) 21 r = e.read() 22 aux1 = r.split('\n') 23 # primeiro recupera BASE ... 24 for linha in aux1: 25 linha = linha.strip() 26 if linha[0:16] == "$GLOBALS['BASE']": 27 Confs['BASE'] = BASE 28 break 29 # Agora os demais ... 30 for linha in aux1: 31 linha = linha.strip() 32 if linha[0:10] == "$GLOBALS['": 33 if linha[0:16] != "$GLOBALS['BASE']": 34 aux2 = linha.split(';') 35 if aux2[0] != '': 36 aux2a = aux2[0].split("'") 37 aux3 = aux2[0].split("=") 38 Confs[aux2a[1]] = aux3[1].replace(' ','') 39 # Finalmente trata as ocorrencias de BASE ... 40 for chave in Confs.keys(): 41 if chave != 'BASE': 42 aux = Confs[chave].replace("$GLOBALS['BASE'].",Confs['BASE']) 43 Confs[chave] = aux.replace("'",'') 44 return 17 45 18 46 def ler_conf(): 19 # Esta funcao le o arquivo passado como parametro e gera a lista CRL_urls. 20 # O arquivo he esperado no formato: 21 # url;path ( url = aponta onde buscar a crl, e path aponta onde salvar a crl obtida. 22 e = open(arquivo) 23 r = e.read() 24 aux1 = r.split('\n') 25 for linha in aux1: 26 if linha[0:1] != '#': 27 aux2 = linha.split(';') 28 if aux2[0] != '': 29 CRL_urls.append(aux2) 30 return 47 # Esta funcao le o arquivo passado como parametro e gera a lista CRL_urls. 48 # O arquivo he esperado no formato: 49 # url ( url = aponta onde buscar a crl, uma por linha. 50 ler_arquivo_com_configuracao() 51 e = open(Confs['arquivos_crls']) 52 r = e.read() 53 aux1 = r.split('\n') 54 for linha in aux1: 55 if linha[0:1] != '#': 56 if linha != '': 57 # Faz split com ';' para manter compatibilidade com arquivos formato antigo ... 58 CRL_urls.append([linha.split(';')[0],Confs['CRLs']]) 59 return
Note: See TracChangeset
for help on using the changeset viewer.