Qual é a diferença entre set_client_CA_list_from_file de M2Crypto () e load_verify_info () e quando você usar cada um?
Pergunta
O href="http://chandlerproject.org/bin/view/Projects/MeTooCrypto" rel="nofollow noreferrer"> biblioteca tem algumas funções relacionadas ao CA na sua SSL.Context objeto , mas a documentação é muito claro a respeito de quando você usaria certas funções e porquê. Na verdade, os documentos para quase todos eles são "certs carga CA para o contexto", de modo que parece possível que todos eles fazem a mesma coisa.
Há vários < a href = "http://www.cs.technion.ac.il/~danken/SecureXMLRPCServer.py" rel = "nofollow noreferrer"> exemplos que o uso tanto set_client_CA_list_from_file()
e load_verify_info()
, mas também há outra semelhante funções como load_client_ca()
e load_verify_locations()
.
Estou escrevendo ambos os pedaços de cliente e servidor. Quais as funções que eu deveria usar e por quê? O que especificamente eles fazem?
Editar:
Olhando através do código que eu ver:
# Deprecated.
load_client_CA = load_client_ca = set_client_CA_list_from_file
e
# Deprecated.
load_verify_info = load_verify_locations
Assim que ajuda um pouco. Isto leva-nos para baixo para duas funções: set_client_CA_list_from_file()
e load_verify_locations()
. Mas eu ainda não consigo dizer a diferença entre os dois.
Solução
Se o seu servidor requer que o cliente apresentar um certificado, ele pode restringir quem são os emissores válidas dos certificados de cliente, especificando os emissores de chamada set_client_CA_list_from_file . Isso é realmente muito raro.
Os especifica do cliente, que são os emissores de certificado de servidor válido chamando load_verify_locations . Quase todos os clientes devem fazer isso.
Tanto o cliente eo servidor pode chamar load_cert para definir seu próprio certificado. Os servidores devem quase sempre fazer isso. Clientes provavelmente deve fazer isso somente se o servidor requer que o cliente apresentar um certificado.
Eu recomendo que você pegar uma cópia do Segurança de Rede com OpenSSL por John Viega, Matt Messier e Pravir Chandra, ISBN 059600270X, que deve esclarecer estas questões com mais detalhes.