certificado($certificados); $df = $CB->dados['FIM_VALIDADE']; $di = $CB->dados['INICIO_VALIDADE']; if(gmdate("YmdHis") > $df) { $cor = ''; } else { $cor = ''; } $info = $cor . substr($df,0,4) . '/' . substr($df,4,2) . '/' . substr($df,6,2) . ' - ' . substr($df,8,2) . ':' . substr($df,10,2) . ':' . substr($df,12,2) . ' GMT'; $info = ''; // Armazena alguns dados do certificado. $tabs_certs esta na mesma ordem em que os certificados aparecem no arquivo todos.cer..... $tab_certs[$CB->dados['SUBJECT']['CN']]['item'] = $item++; $tab_certs[$CB->dados['SUBJECT']['CN']]['emissor'] = $CB->dados['EMISSOR_CAMINHO_COMPLETO']['CN']; $tab_certs[$CB->dados['SUBJECT']['CN']]['fim_validade'] = $info; $tab_certs[$CB->dados['SUBJECT']['CN']]['inicio_validade'] = $di; if($CB->dados['EMISSOR_CAMINHO_COMPLETO']['CN'] != $CB->dados['SUBJECT']['CN']) { // Se nao he um auto assinado (identifica um raiz), salva emissor , faz a chave a tdata de inicio de validade do certificado... $aux_emissores[$di][$CB->dados['EMISSOR_CAMINHO_COMPLETO']['CN']][$CB->dados['SUBJECT']['CN']] = '9' ; } } // ordena certificados pela data de inicio de validade ...... ksort($aux_emissores); $NOVO = array(); $AUX3 = array(); $emissores = array(); foreach($aux_emissores as $kchave1 => $emis1) { foreach($emis1 as $Kchave2 => $emis2) { foreach($emis2 as $Kchave3 => $emis3) { $emissores[$Kchave2][$Kchave3] = '9'; } } } // O array $NOVO vai conter a cadeia dos certificados de CAs .... foreach($emissores as $K => $V) { if($AUX3[$K] != '0') { foreach($V as $K1 => $V1) { if($emissores[$K1]) { $NOVO[$K][$K1] = $emissores[$K1]; $AUX3[$K1] = '0'; } else { $NOVO[$K][$K1] = '0'; } } } } // Valores auxiliares para fazer a identacao ..... $prefixo0 = '  ' . '|'; $prefixo1 = '  ' . '|' . '____' ; $prefixo2 = '  ' . '|' . '  ' . '  ' . '  ' . '  ' . '|' ; $prefixo2A = '  ' . '  ' . '  ' . '  ' . '  ' . '  ' . '|' ; $prefixo3 = '  ' . '|' . '  ' . '  ' . '  ' . '  ' . '|' . '____' ; $prefixo3A = '  ' . '  ' . '  ' . '  ' . '  ' . '  ' . '|' . '____' ; echo ''; echo '

Cadeias de certificados AC\'s configuradas:

'; echo '
'; echo '
';
		foreach($NOVO as $K => $V)
			{
				if($tab_certs[$K]['fim_validade'])
					{
						$msg =  $tab_certs[$K]['fim_validade'];
					}
				else
					{
						$msg =  'Certificado ausente da cadeia. ';
					}
				echo '
' . $K . ' ' . $msg . '
'; if(is_array($V)) { $num = count($V); $item = 0; foreach($V as $K1 => $V1) { $item = $item + 1; echo $prefixo0 . '
'; if($tab_certs[$K1]['fim_validade']) { $msg = $tab_certs[$K1]['fim_validade']; } else { $msg = 'Certificado ausente da cadeia. '; } echo $prefixo1 . '' . $K1 . ' ' . ' ' . $msg . '
'; if(is_array($V1)) { foreach($V1 as $K2 => $V2) { if($tab_certs[$K1]['fim_validade']) { $msg = $tab_certs[$K1]['fim_validade']; } else { $msg = 'Certificado ausente da cadeia. '; } if($num>$item) { echo $prefixo2 . '
'; echo$prefixo3 . '' . $K2 . ' ' . ' ' . $msg . '
'; } else { echo $prefixo2A . '
'; echo $prefixo3A . '' . $K2 . ' ' . ' ' . $msg . '
'; } } } } } } echo '
'; echo '

'; } if($path1) { $Linhas = explode(chr(0x0A),file_get_contents($path1)); echo '

LCR\'s configuradas:

'; echo ''; echo ''; foreach($Linhas as $linha) { if($linha[0] != '#' && $linha != '') { $c = explode(';', $linha); $n = explode('/',$c[0]); $f = $c[1] . $n[count($n)-1]; echo ''; } } echo '
Lista de Certificados revogados obtida em:Onde é salva a LCR:
' . $c[0] . ''; echo $f; if(!is_file($f)) { echo '

Arquivo não localizado.

'; } else { $data = file_get_contents($f); $dados = Crl_parseASN($data); echo '

Emitido por: '; $aux = $dados[1][0][1][2][1]; // pega dados do emissor. $aux = $aux[count($aux)-1]; // ultimo item he o do CN..... echo $aux[1][1][1][1]; echo '
Num. certificados: '; $num = 0; if(count($dados[1][0][1]) > 6) // qtd de itens esperado he 7. o 6 contem os certificados revogados. { $num = count($dados[1][0][1][5][1]); // pega o numero de certificados revogados na LCR. } echo $num; echo '
LCR num. : '; $oid_Num_crl = recupera_dados_oid($data,'2.5.29.20'); // oid que informa o numero de geracao da LCR. $num = $oid_Num_crl[0][1][1][1]; if($num) { echo $num; } else { echo '0'; } echo '
'; $di = data_hora($dados[1][0][1][3][1]); // data, hora em que foi gerada a LCR. $df = data_hora($dados[1][0][1][4][1]); // data, hora em que expira a LCR. if(gmdate("YmdHis") < $di) { $cor = 'style="color: #FF0000"'; } else { $cor = 'style="color: #000066"'; } echo '

Gerada em : ' . substr($di,0,4) . '/' . substr($di,4,2) . '/' . substr($di,6,2) . ' - ' . substr($di,8,2) . ':' . substr($di,10,2) . ':' . substr($di,12,2) . ' GMT

'; if(gmdate("YmdHis") > $df) { $cor = 'style="color: #FF0000" >Expirada em: '; } else { $cor = 'style="color: #000066" >Expira em: '; } echo '

' . substr($df,0,4) . '/' . substr($df,4,2) . '/' . substr($df,6,2) . ' - ' . substr($df,8,2) . ':' . substr($df,10,2) . ':' . substr($df,12,2) . ' GMT

'; } echo '



'; } if($path2) { echo '

Log da atualização das LCR\'s:

'; echo '
'; echo '
';
			if(is_file($path2))
				{
					$saida = array();
					$ret = exec('cat ' . $path2 . ' | grep ' . date('Y-m-d') ,$saida);
					foreach($saida as $linha)
						{
							echo $linha . chr(0x0A);
						}
				}
			else
				{
					echo '

Arquivo ' . $path2 . ' não localizado.

'; } echo '
'; echo '


'; } ?>