문제

Apache Tomcat 6에서 사용할 자체 서명 인증서를 생성하려고 합니다.내가 만들 수 있는 모든 인증서는 항상 브라우저가 AES-128과 연결되도록 합니다.고객은 AES-256에서 연결을 생성할 수 있다는 것을 보여주기를 원했습니다.

나는 Java의 keytool과 openssl을 사용해 보았습니다.다양한 매개변수를 사용하여 시도했지만 키 크기에 대해서는 아무것도 지정할 수 없고 서명 크기만 지정할 수 있는 것 같습니다.

자체 서명된 인증서로 AES-256을 사용하기 위해 브라우저-Tomcat 연결을 어떻게 얻을 수 있습니까?

도움이 되었습니까?

해결책

알았어, 방금 이걸 알아낸 것 같아.

위에서 말했듯이 중요한 지식은 AES 256비트 암호화(예: RSA)를 지원하는 알고리즘으로 생성된 인증서라면 중요하지 않다는 것입니다.동일한 페이지에 있는지 확인하기 위해 테스트를 위해 다음을 사용하여 자체 서명된 인증서를 생성했습니다.

keytool -genkey -alias tomcat -keyalg RSA

이제 서버의 Java 구현이 AES-256을 지원하는지 확인해야 하는데 이는 까다로운 부분입니다.OS X(OS 10.5) 상자에서 테스트를 수행했으며 기본적으로 지원되는 암호 목록을 확인했을 때 AES-256이 목록에 없었기 때문에 위에서 생성한 인증서만 사용했습니다. 내 브라우저와 Tomcat 사이에 AES-128 연결을 생성합니다.(기술적으로 TLS_RSA_WITH_AES_256_CBC_SHA는 목록에 없었습니다. 이 JDK 5 목록.)

완전성을 위해 상자에서 지원되는 암호를 확인하기 위해 만든 짧은 Java 앱은 다음과 같습니다.

import java.util.Arrays;
import javax.net.ssl.SSLSocketFactory;

public class CipherSuites {
  public static void main(String[] args) {
    SSLSocketFactory sslsf = (SSLSocketFactory) SSLSocketFactory.getDefault();
    String[] ciphers = sslsf.getDefaultCipherSuites();
    Arrays.sort(ciphers);
    for (String cipher : ciphers) {
      System.out.println(cipher);
    }
  }
}

이 OS X 상자에 기본적으로 설치되어 있는 JDK 5는 더 높은 비트 암호화 수준을 사용해도 괜찮다는 것을 Java에 알리기 위해 "무제한 강도 관할권 정책 파일"이 설치되어 있어야 합니다.당신은 할 수 여기서 그 파일을 찾아보세요 (아래로 스크롤하여 "기타 다운로드" 섹션 상단을 확인하세요).JDK 6에 동일한 작업이 필요한지 확실하지 않지만 JDK 6에 대한 동일한 정책 파일이 필요합니다. 여기에서 이용 가능합니다, 그래서 나는 그렇다고 가정합니다.해당 파일의 압축을 풀고 README를 읽어 파일이 속한 위치에 파일을 설치하는 방법을 확인한 다음 지원되는 암호를 다시 확인하십시오.이제 AES-256이 목록에 있을 것 같습니다.

그렇다면 당신은 금빛이어야 합니다.Tomcat을 다시 시작하고 SSL 인스턴스에 연결하면 이제 AES-256 연결이 표시될 것입니다.

다른 팁

단, 서버의 인증서가 AES 암호화를 지원하는 한, 브라우저와 서버 간의 암호화 수준은 인증서 자체와 독립적입니다. 즉, 해당 암호화 수준은 브라우저와 서버 간에 협상됩니다.즉, 내가 이해한 바에 따르면 인증서는 암호화 수준을 지정하지 않고 단지 암호화 수준을 지정합니다. 유형 암호화(예: AES).보다 이 링크 (PDF)에서 이에 대한 확인과 인증서가 256비트 기능을 결정하는 것이 아님에도 불구하고 인증서 리셀러가 "256비트 지원" 인증서를 상향 판매하는 방법을 알아보세요.

따라서 AES-128을 지원하는 인증서로는 괜찮습니다. 그리고 핵심은 Tomcat이 AES-256을 지원하도록 하는 방법을 알아내는 것입니다(전부는 아니더라도 대부분의 주요 브라우저가 확실히 이를 지원하기 때문입니다).

SSL 연결의 강도는 브라우저와 서버(또는 SSL을 제공하는 모든 항목) 간에 협상됩니다.브라우저가 더 약한 암호를 요구할 수도 있습니다.이 브라우저에서 256-AES SSL 연결을 본 적이 있습니까?AES-128은 여전히 ​​매우 안전한 알고리즘이므로 오프라인으로부터 보호하고 싶은 것이 없다면(생각해 보세요:슈퍼컴퓨터 무차별 대입으로 2^128개의 키 생성 위키피디아) 공격, 128비트는 괜찮을 것입니다.그렇게 많은 보호가 정말로 필요하다면 데이터 액세스를 위해 웹사이트보다 더 안정적인 솔루션을 사용해야 할 것입니다. 서버에 대한 보안 SSH 터널은 완벽합니다(256비트 AES 및 4096비트를 가질 수 있다고 말할 수 있습니다). RSA도 마찬가지) 또는 구현에 따라 VPN입니다.

내 생각에 당신이 찾고 있는 것은http://www.sslshopper.com/article-how-to-disable-weak-ciphers-and-ssl-2-in-tomcat.html 그리고http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA

우수한 보안 및 호환성을 원하는지 아니면 PCI 인증을 원하는지에 따라 다릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top