웹사이트 검색

Lets Encrypt 인증서를 사용한 중간 호환 SSL에 대한 생각


이 페이지에서

  1. 소개
  2. 실제 합병증\n
  3. 전제 조건
  4. 전체 아이디어
  5. 더 이상의 이론은 없습니다
  6. Awstats
  7. HTTPS 구성

Let's Encrypt는 대중의 이익을 위해 운영되는 무료 자동화 공개 인증 기관(CA)입니다. Let's Encrypt의 핵심 원칙은 다음과 같습니다.

Let’s Encrypt의 핵심 원칙은 무료입니다. 도메인 이름을 소유한 사람은 누구나 Let’s Encrypt를 사용하여 무료로 신뢰할 수 있는 인증서를 얻을 수 있습니다.

  • 무료: 도메인 이름을 소유한 사람은 누구나 Let’s Encrypt를 사용하여 무료로 신뢰할 수 있는 인증서를 얻을 수 있습니다.\n
  • 자동: 웹 서버에서 실행되는 소프트웨어는 Let’s Encrypt와 상호 작용하여 손쉽게 인증서를 얻고 사용을 위해 안전하게 구성하고 자동으로 갱신을 처리할 수 있습니다.\n
  • 보안: Let's Encrypt는 CA 측과 사이트 운영자가 서버를 적절하게 보호할 수 있도록 지원함으로써 TLS 보안 모범 사례를 발전시키는 플랫폼 역할을 할 것입니다.\n
  • 투명: 발급 또는 취소된 모든 인증서는 공개적으로 기록되며 누구나 검사할 수 있습니다.\n
  • 개방형: 자동 발급 및 갱신 프로토콜은 다른 사람들이 채택할 수 있는 개방형 표준으로 게시됩니다.\n
  • 협력: 기본 인터넷 프로토콜 자체와 마찬가지로 Let's Encrypt는 한 조직의 통제를 넘어 커뮤니티에 이익을 주기 위한 공동 노력입니다.
    (출처: https://letsencrypt.org/about/)\n

소개

먼저 Lets Encrypt 서비스의 어두운 면에 대해 언급해야 합니다. 무료 공개 및 공개 인증 기관에 대한 아이디어가 아무리 훌륭하더라도 이는 우리에게 많은 문제를 안겨줍니다. 개발자들은 인증서를 얻는 시스템을 가능한 한 간단하게 만들려고 노력했지만 여전히 서버 관리의 더 높은 기술이 필요합니다. 따라서 ISPConfig(http://www.ispconfig.org/)의 개발자와 같은 많은 개발자가 이 솔루션을 직접 구현했습니다. 이를 통해 전체 시스템에 대한 보다 효과적인 배포 및 감독이 훨씬 쉽고 유연해집니다.

진짜 합병증

많은 사람들이 Lets Encrypt를 프로덕션 사이트에 구현하기로 결정했습니다. 나는 이것이 매우 (그러나 정말로 매우) 조심하지 않고 수행되는 것은 여전히 매우 나쁜 생각이라는 것을 알았습니다. Lets Encrypt는 SHA-256 RSA 암호화와 함께 인증서를 사용하는 데 있어 자유로움을 제공하지만 제한적이기도 합니다. SHA-256에 대한 지원은 지난 몇 년 동안 개선되었습니다. 대부분의 브라우저, 플랫폼, 메일 클라이언트, 휴대기기는 이미 SHA-256을 지원합니다. 그러나 Windows XP pre-SP3와 같은 일부 이전 운영 체제는 SHA-256 암호화를 지원하지 않습니다. 많은 조직에서 사용자 경험 문제 없이 SHA-256으로 전환할 수 있으며 많은 조직에서 보안 수준이 낮은 오래된 시스템을 실행하는 사용자에게 업그레이드를 권장할 수 있습니다.

이 튜토리얼에서는 이 비호환성을 간단하지만 불쾌한 방식으로 처리할 것입니다.

전제 조건

  • Apache 버전 2.4 이상
  • OpenSSL 버전 1.0.1e 이상
  • Apache mod_rewrite 활성화됨\n

전체 아이디어

앞서 언급했듯이 인터넷에는 여전히 SHA-256 서명과 호환되지 않는 기기가 있습니다. 일부 웹사이트에 SSL을 배포해야 했을 때 두 가지 옵션 중 하나를 선택해야 했습니다.

  1. Lets Encrypt를 사용하면 무료이지만 전부는 아닙니다.\n
  2. 128비트 서명이 있는 인증서 구입.

글쎄, 여전히 옵션 아니오. 1은 오래 전에 고객에게 약속된 유일한 방법이었습니다(:No more theory:

더 이상 이론은 없다

필요한 사항을 설명했고 이제 우리 웹 사이트의 지원되지 않는 뷰어를 처리할 수 있기를 바랍니다. SP2 이하의 Windows XP 시스템을 사용하는 사람이 많습니다(예, 여전히 많이 있습니다). 그래서 우리는 이 사람들을 걸러내야 합니다.

"/etc/apache2/sites-available/your_domain.com.conf” 파일 끝에 다음을 추가합니다.

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !(NT\ 5) [NC]
RewriteRule ^(.*) https:// your_domain.com [R]

RewriteCond는 페이지에 액세스하는 게스트의 http 헤더에서 문자열을 가져옵니다. http://www.useragentstring.com/에서 간단히 확인하고 자세한 정보를 찾을 수 있습니다.

우리가 사용한 조건은 "문자열에 NT 5가 포함되지 않은 경우\와 같은 것을 알려주고 RewriteRule은 [R]을 도메인의 https 변형으로 리디렉션하는 규칙을 실행/적용합니다. NT 5는 Windows XP 장치용 OS 버전 문자열입니다. 이 리디렉션을 사용하지 마십시오. 호환되지 않는 사용자는 https 웹사이트에 액세스할 수 없습니다.

이 리디렉션을 사용하지 않으면 호환되지 않는 사용자가 https 웹사이트에 액세스할 수 없습니다.

게스트 중 일부는 관련 정보나 실제 정보를 제공할 필요가 없기 때문에 이 솔루션이 100% 완벽하지 않다는 점에 대해 경고해야 합니다. 나는 AWstats와 협력하여 알 수 없는 시스템이 내 페이지에 액세스하는 비율을 파악했으며 약 1.3%이므로 요청이 거의 없습니다. 호환성을 보장하기 위해 알 수 없는 운영 체제를 처리하려는 경우 조건에 unknown을 추가할 수도 있습니다(RewriteCond %{HTTP_USER_AGENT} !(NT\\ 5|unknown) [NC]).

어스타츠

호환되지 않는 방문자를 성공적으로 "비리디렉션\한 후(안전하지 않은 http 세계에 유지) https 측에 집중할 수 있습니다.

HTTPS 구성

이제 웹 서버에 이미 인증서를 할당하고 활성화했다고 가정합니다.
가상 호스트 구성 파일에서 다시 다음을 추가합니다.

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA 
SSLProtocol All -SSLv2 -SSLv3
SSLCompression off
SSLHonorCipherOrder On

여기서 사용되는 CipherSuite는 평소보다 약간 더 깁니다. 더 나은 호환성을 위한 것입니다. 다음에서 직접 얻을 수 있습니다.

다시 한 번 말하지만, 높은 보안 정책과 호환성을 충족하는 완벽한 구성을 얻을 수는 없습니다. 타협점을 찾아야 합니다.

이러한 설정을 사용한 후 다음 위치에서 서버 구성 및 호환성을 테스트할 수 있습니다.

호환되는 장치와 호환되지 않는 장치의 긴 목록을 찾을 수 있으며 자신만의 "완벽한\ 솔루션을 찾을 수 있는 추가 정보도 있습니다.