2017-12-06 14 views
0

은 가벼운 http 서버 (내장 된 소프트웨어 솔루션)입니다. 이 http 서버는 openssl 함수를 호출하여 https 연결을 처리합니다.내 https 서버에서 DES를 사용하지 않음

내가 기능을 찾을 수 있도록 내 HTTPS 서버에 DES 암호화를 사용하지 않을 :

SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str); 

내가있는 OpenSSL에서 초보자를 해요 내가 기능을 전달 할 수있는 권리 문자열을 찾으려면을 SSL_CTX_set_cipher_list()

내 서버에서 DES를 사용하지 않으려면 SSL_CTX_set_cipher_list()에 사용할 문자열은 무엇입니까?

ctx = SSL_CTX_new(meth); 바로 뒤에 SSL_CTX_set_cipher_list()으로 전화하는 것이 맞습니까?

+1

[man ciphers] (https://www.openssl.org/docs/man1.0.2/apps/ciphers.html)를 공부하십시오. DES를 사용 불가능하게하기 위해'... :! DES '로 끝나지 만, 3DES는 DES와 같지 않으므로 이것을 비활성화하고 싶을 것입니다. 유용한 암호 문자열은 https://wiki.mozilla.org/Security/Server_Side_TLS를 참조하십시오. –

답변

0

question에서 SSL_CTX_set_cipher_list 사용 예를 발견했습니다.

요약하면 사이버 구분자로 :을 사용하여 알고리즘 문자열을 선언하고 (wiki openssl의 알고리즘 이름을 참조 할 수 있음) 사이퍼 목록을 설정하기 전에 (제안 된대로) 컨텍스트를 만들어야합니다. 코드의 작은 예 :

// List of allowed ciphers in a colon-separated list. 
const char *allowedCiphers = "ECDHE-ECDSA-AES256-SHA384:AES256-GCM-SHA384"; 
int main() 
{ 
    const SSL_METHOD *method; 
    SSL_CTX *ctx; 

    method = SSLv23_server_method(); 
    ctx = SSL_CTX_new(method);  
    // Set the allowed ciphers 
    if (SSL_CTX_set_cipher_list(ctx, ciphers) != 1) 
    { 
    //define error 
    } 
    SSL_CTX_free(ctx); 
    cleanup_openssl(); 
    return 0; 
} 

마지막으로 내가 라이브러리가 DES 방법을 허용하는 경우 당신이 this proposal에서 볼 수 있듯이, 때문에,은 OpenSSL의 버전을 변경 제안은, DES는 명시 적으로 컴파일하는 경우를 제외하고 기본적으로 비활성화되어 있습니다. 따라서 openSSL 버전을 업데이트하는 것이 좋습니다.