2017-01-16 8 views
0

Windows에서 Java 8을 사용하는 Jenkins를 실행하는 Winstone 서버가 있습니다. 클라이언트 요청이 기본 암호를 지정하지 못하면 Diffie-Hellman 암호 서버가 선호합니다. Tomcat과는 달리 Winstone은 주문하기 위해 암호 목록을 지정하는 방법을 가지고 있지 않습니다. 그래서, 비 DHE 및 비 ECDHE 암호를 비활성화하려고합니다. 나는 MD2 알고리즘의 최소 keysize 및 제거를 지정하여 java.security 파일의 사용 불가능한 알고리즘 목록을 수정하여 일부를 제거 할 수 있었지만 모두 비활성화 할 수는 없습니다. OpenSSL을 같이 나머지 원치 않는 암호 알고리즘을 식별 :JSSE에서 비 DHE 및 ECDHE 암호 사용 안 함

java.security 파일에서
AES128-GCM-SHA256 
AES128-SHA256 
AES128-SHA 
EDH-RSA-DES-CBC3-SHA 
DES-CBC3-SHA 

, 나는 다양 AES, AES128, 없음, EDH 및 DES에 대한 필터를 추가, 아직 시도했습니다 이러한 알고리즘은 여전히 ​​활성화 나타날 때 서버에 요청하십시오. 또한 legacyAlgorithms 뒤에 항목을 제거하려고 시도했습니다. 누구든지 필터 값이 이들을 제거합니다 알고 있습니까?

java.security 조각 :

jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024 
jdk.tls.disabledAlgorithms=SSLv3, RC4, SSLv2Hello, TLSv1, TLSv1.1 
jdk.tls.legacyAlgorithms= \ 
    K_NULL, C_NULL, M_NULL, \ 
    DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \ 
    DH_RSA_EXPORT, RSA_EXPORT, \ 
    DH_anon, ECDH_anon, \ 
    RC4_128, RC4_40, DES_CBC, DES40_CBC 
+0

java.policy 파일 표시 – JJF

+0

"클라이언트 요청이 선호 암호를 지정하지 못하면 Diffie-Hellman 암호가 서버에서 선호됩니다."실제로 의미가 없습니다. 적어도 나에게. 클라이언트 안녕하세요는 항상 암호 목록을 기본 설정 순서로 포함합니다. –

+0

James, 저는 SSL 전문가가 아닙니다. 나는 네가 옳았다 고 믿는다. 나는 언젠가 내가 잘못 읽은 것에 대해 생각해 왔을 것이다. 어쨌든 여기에서 암호 순서 환경 설정에 대한 토론을 참조하십시오. http : //security.stackexchange.com/questions/121608/is-the-order-of-cipher-suites-related-to-the-clients-preferences 또는 http : //www.exploresecurity.com/testing-for-cipher-suite-preference/ 서버에는 클라이언트 기본 설정 순서를 무시할 수있는 기능이 있습니다. Winstone이 나에게 그 옵션을주지 않기 때문에 목록에 ECDHE 및 DHE 알고리즘 만 포함 시키길 원합니다. –

답변

1
당신이 무엇을 설명하지 않습니다

java.policy; java.security 않습니다. 그러나 개별 프리미티브 만 비활성화하거나 제한하며 AFAICT는 비 PFS를 클래스로 비활성화 할 수 없습니다.

(즉는 ECC 키와 KU = 기호와 CERT) 아닌 RSA의 인증서가 만 ECDHE - ECDSA 암호가 인증서와 협상 할 수 CERT는 서버에게 ECDSA를 제공 (그리고 할 수있는) 경우 . 귀하 (또는 대신)가 DSA 인증서을 제공하면 DHE-DSS 암호 만 해당 인증서와 협상 할 수 있습니다. 이는 DSA 인증서를 발급 한 공용 CA를 찾지 못해서 자신의 CA 또는 자체 서명 (장점 및 단점이 있음)을 사용하는 데 달려있을 수 있습니다. Java8은 기본적으로 DHE를 1024 비트 공유 값으로 기본 설정합니다.이 값은 이제 보안의 경계선으로 간주되지만 시스템 속성을 사용하면 변경할 수 있습니다 (How to expand DH key size to 2048 in java 8 참조).

PS : OpenSSL을 호출 'EDH는'DHE는 RFC에이고 실제로 알고리즘 DH이고, 무엇은 OpenSSL은 'DES-CBC3'을 호출하는 것은 정말 무엇 {3DES | 3DES-EDE | DESEDE} -CBC; Map SSL/TLS cipher suites and their OpenSSL equivalents

+0

데이브 감사합니다. 그것은 나를 위해 누락 된 부분을 채 웁니다. Java와 OpenSSL간에 다른 명명 규칙이 있다고 생각했습니다. 나는지도에서 읽고 내가 어디에서나 얻을 수 있는지 알아볼 것이다. @jjf가 파일을 요청한 후에 잘못된 파일 이름을 사용했다는 것을 알았고 내 질문을 업데이트했습니다. –

+0

RSA * 암호화 *를 허용하지 않는 인증서도 사용할 수 있습니까? 이러한 인증서 중 하나를 얻으려면 까다로운 CA 인증을 받아야합니다. 모든 구현이 EC 암호화를 지원하지는 않습니다 (Java는 분명히 그렇지만). –