서버에서 HTTPS 사용 설정

Chris Palmer
Chris Palmer

이 페이지에서는 다음을 포함하여 서버에 HTTPS를 설정하는 방법을 안내합니다. 다음 단계를 따르세요.

  • 2048비트 RSA 공개 키/비공개 키 쌍 생성
  • 공개 키를 포함하는 CSR (인증서 서명 요청)를 생성합니다.
  • 최종 인증서를 받기 위해 CSR을 인증 기관 (CA)과 공유합니다. 구성될 수 있습니다
  • 다음과 같이 웹에서 액세스할 수 없는 장소에 최종 인증서를 설치 /etc/ssl (Linux 및 Unix) 또는 IIS에서 필요로 하는 모든 위치 (Windows)

키 및 인증서 서명 요청 생성

이 섹션에서는 대부분의 Chrome 브라우저와 함께 제공되는 openssl 명령줄 프로그램을 사용합니다. Linux, BSD 및 Mac OS X 시스템을 사용하여 개인 및 공개 키와 CSR를 생성합니다.

공개 키/비공개 키 쌍 생성

시작하려면 2,048비트 RSA 키 쌍을 생성합니다. 더 짧은 키는 다음과 같은 이유로 손상될 수 있습니다. 무차별 대입 추측 공격, 더 긴 키는 불필요한 리소스를 사용합니다.

다음 명령어를 사용하여 RSA 키 쌍을 생성합니다.

openssl genrsa -out www.example.com.key 2048

그러면 다음과 같이 출력됩니다.

Generating RSA private key, 2048 bit long modulus
.+++
.......................................................................................+++
e is 65537 (0x10001)

인증서 서명 요청 생성

이 단계에서는 공개 키와 조직에 관한 정보를 삽입합니다. 인증서 서명 요청 또는 CSR로 보냅니다. openssl 명령이 필요한 메타데이터를 요청합니다.

다음 명령을 실행하여

openssl req -new -sha256 -key www.example.com.key -out www.example.com.csr

다음을 출력합니다.

You are about to be asked to enter information that will be incorporated
into your certificate request

What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CA
State or Province Name (full name) [Some-State]:California
Locality Name (for example, city) []:Mountain View
Organization Name (for example, company) [Internet Widgits Pty Ltd]:Example, Inc.
Organizational Unit Name (for example, section) []:Webmaster Help Center Example
Team
Common Name (e.g. server FQDN or YOUR name) []:www.example.com
Email Address []:webmaster@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

CSR의 유효성을 확인하려면 다음 명령어를 실행합니다.

openssl req -text -in www.example.com.csr -noout

다음과 같은 응답이 나타나야 합니다.

Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=CA, ST=California, L=Mountain View, O=Google, Inc.,
OU=Webmaster Help Center Example Team,
CN=www.example.com/emailAddress=webmaster@example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:ad:fc:58:e0:da:f2:0b:73:51:93:29:a5:d3:9e:
                    f8:f1:14:13:64:cc:e0:bc:be:26:5d:04:e1:58:dc:
                    ...
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha256WithRSAEncryption
         5f:05:f3:71:d5:f7:b7:b6:dc:17:cc:88:03:b8:87:29:f6:87:
         2f:7f:00:49:08:0a:20:41:0b:70:03:04:7d:94:af:69:3d:f4:
         ...

CSR을 인증 기관에 제출

다른 인증 기관 (CA)에 CSR를 제출하도록 요구합니다. 사용할 수 있습니다. 웹사이트에서 양식을 사용하거나 이메일로 CSR에 보냅니다. 일부 CA 또는 해당 리셀러는 일부 또는 전체를 자동화할 수도 있습니다. 일부의 경우 키 쌍 및 CSR 생성을 포함합니다.

CSR을 CA로 보내고 지시에 따라 최종 구성될 수 있습니다

CA마다 쿠폰 서비스에 대해 청구하는 금액이 다릅니다. 지정할 수도 있습니다

다음을 포함하여 둘 이상의 DNS 이름에 키를 매핑하는 옵션도 있습니다. 여러 다른 이름 (예: example.com, www.example.com, example.net, 및 www.example.net) 또는 '와일드카드' 이름(예: *.example.com)

웹에서 액세스할 수 없는 모든 프런트엔드 서버에 인증서 복사 /etc/ssl (Linux 및 Unix)이나 IIS (Windows)에서 있습니다.

서버에서 HTTPS 사용 설정

서버에서 HTTPS 활성화는 서버에 대한 보안을 제공하는 데 있어 중요한 단계입니다 웹페이지입니다.

  • Mozilla의 Server Configuration 도구를 사용하여 HTTPS용 서버를 설정합니다. 도움이 될 수 있습니다
  • Qualys의 평가를 통해 사이트를 정기적으로 테스트하세요. SSL 서버 테스트 및 최소 A 또는 A+를 받게 됩니다.

이 시점에서 중요한 운영 결정을 내려야 합니다. 다음 중 하나를 선택하세요. 있습니다.

  • 웹 서버에서 콘텐츠를 제공하는 각 호스트 이름 전용 IP 주소 전용 있습니다.
  • 이름 기반 가상 호스팅을 사용합니다.

각 호스트 이름에 대해 고유한 IP 주소를 사용해 왔다면 모든 클라이언트에 대해 HTTP 및 HTTPS를 모두 사용할 수 있습니다 그러나 대부분의 사이트 운영자는 가상 호스팅을 이용하면 IP 주소를 절약할 수 있고 일반.

서버에서 HTTPS 서비스를 사용할 수 없는 경우 지금 사용하도록 설정합니다. (HTTP를 HTTPS로 리디렉션하지 않음) HTTP를 HTTPS로 리디렉션을 참조하세요. 를 참조하세요. 생성하는 인증서를 사용하도록 웹 서버를 구성합니다. 구매 및 설치되었습니다. Mozilla의 구성 생성기 유용하죠.

호스트 이름 또는 하위 도메인이 많은 경우 각각 올바른 있습니다.

이제 사이트의 전체 기간에 걸쳐 정기적으로 HTTPS를 확인하세요. Qualys' SSL 서버 테스트를 참조하세요. 사이트 점수가 A 또는 A+여야 합니다. 낮은 성적을 초래하는 모든 것은 버그와 철저한 대응을 해야 합니다. 항상 개발되고 있습니다.

사이트 내 URL을 상대 URL로 만들기

이제 HTTP와 HTTPS로 사이트를 제공하므로 사이트가 다음과 같이 작동해야 합니다. 가능한 한 원활하게 작동해야 합니다. 중요한 요소는 사이트 내 링크의 상대 URL을 사용합니다.

사이트 내 URL과 외부 URL이 특정 프로토콜에 종속되지 않는지 확인합니다. //example.com/something.js에서와 같이 상대 경로를 사용하거나 프로토콜을 제외합니다.

HTTPS를 사용하여 HTTP 리소스가 포함된 페이지 제공 문제가 발생할 수 있습니다. 브라우저에서 안전하지 않은 리소스를 사용하여 페이지가 안전한지 여부를 완벽하게 안전하지 않을 수도 있으며, 일부 브라우저는 HTTP 헤더 로드 또는 페이지가 분할됩니다. 하지만 HTTPS를 안전하게 포함할 수 있습니다. HTTP 페이지의 리소스입니다 이러한 문제 해결에 대한 자세한 안내는 다음을 참조하세요. 혼합 콘텐츠 문제 해결.

사이트의 다른 페이지로 연결되는 HTTP 기반 링크를 따라가면 사용자 경험을 제공합니다 이 문제를 해결하려면 사이트 내 URL을 되도록 하려면 프로토콜에 비례하도록 만들어야 합니다( //example.com로 시작하는 프로토콜 또는 호스트 관련 프로토콜 (단지로 시작) 경로(예: /jquery.js)

권장사항
<h1>Welcome To Example.com</h1>
<script src="/jquery.js"></script>
<link rel="stylesheet" href="/assets/style.css"/>
<img src="/images/logo.png"/>;
<p>A <a href="/2014/12/24">new post on cats!</a></p>
상대 사이트 내 URL을 사용합니다.
권장사항
<h1>Welcome To Example.com</h1>
<script src="//example.com/jquery.js"></script>
<link rel="stylesheet" href="//assets.example.com/style.css"/>
<img src="//img.example.com/logo.png"/>;
<p>A <a href="//example.com/2014/12/24/">new post on cats!</a></p>
또는 프로토콜 기준 사이트 내 URL을 사용합니다.
권장사항
<h1>Welcome To Example.com</h1>
<script src="/jquery.js"></script>
<link rel="stylesheet" href="/assets/style.css"/>
<img src="/images/logo.png"/>;
<p>A <a href="/2014/12/24">new post on cats!</a></p>
<p>Check out this <a href="https://foo.com/"><b>other cool site.</b></a></p>
가능한 경우 다른 사이트 링크에 HTTPS URL을 사용합니다.

실수를 피하려면 수작업이 아닌 스크립트를 사용하여 링크를 업데이트하세요. 만약 이면 사이트의 콘텐츠가 데이터베이스에 있는 경우 데이터베이스입니다. 사이트의 콘텐츠가 간단한 파일로만 구성된 경우 스크립트를 테스트합니다. 배포해 보겠습니다 이후에만 변경사항을 프로덕션으로 푸시 변경사항이 품질보증을 통과합니다 Bram van Damme의 스크립트를 사용할 수 있습니다 또는 유사 콘텐츠를 사용해 보세요.

다른 사이트의 리소스를 포함하는 대신 다른 사이트에 연결하는 경우 프로토콜을 변경하지 않아도 됩니다 사이트 운영 방식을 제어할 수는 없습니다.

대규모 사이트를 더 원활하게 이전하려면 프로토콜에 상대적인 URL을 사용하는 것이 좋습니다. 아직 HTTPS를 완전히 배포할 수 있는지 확실하지 않은 경우 사이트를 역효과를 일으킬 수 있습니다 2021년에는 HTTP 사이트가 여전히 작동해야 하는 상황에서는 이상하게 됩니다. 사용할 수 있습니다. 시간이 지남에 따라 마이그레이션을 완료하고 HTTPS를 락인하게 될 것입니다. 다음 두 섹션을 참고하세요.

사이트가 서드 파티에서 제공하는 스크립트, 이미지 또는 기타 리소스에 하는 경우 다음 두 가지 옵션이 있습니다.

  • 이러한 리소스에는 프로토콜 기준 URL을 사용합니다. 서드 파티가 사용자에게 요청할 수 있습니다 jquery.com을 포함하여 대부분 업체에서 이미 지원하고 있습니다.
  • 사용자가 제어하는 서버에서 리소스를 제공합니다. HTTPS를 제공합니다 이 방법이 유용할 때가 있습니다. 사이트의 모양, 성능, 보안을 제어할 수 있고 제3자를 신뢰해야만 사이트를 안전하게 보호할 수 있습니다.

HTTP에서 HTTPS로 리디렉션

검색엔진이 HTTPS를 사용하여 사이트에 액세스하도록 하려면 표준 링크 각 페이지의 헤드(<link rel="canonical" href="https://…"/> 태그 사용)

엄격한 전송 보안 및 보안 쿠키 사용 설정

이제 '잠김'할 준비가 되었습니다. HTTPS 사용:

  • HSTS (HTTP Strict Transport Security)를 사용하여 301 리디렉션합니다.
  • 항상 쿠키에 보안 플래그를 설정하세요.

먼저 Strict Transport Security를 사용합니다. 클라이언트에게 항상 HTTPS를 사용하여 서버에 연결해야 한다고 알리지만, http:// 참조를 따를 때 이렇게 하면 SSL 제거, 앞에서 사용 설정한 301 redirect의 왕복 비용을 피합니다. HTTP에서 HTTPS로 리디렉션

HSTS를 사용 설정하려면 Strict-Transport-Security 헤더를 설정합니다. OWASP의 HSTS 페이지 안내 링크 포함 다양한 종류의 서버 소프트웨어에 사용할 수 있습니다.

대부분의 웹 서버는 커스텀 헤더를 추가하는 유사한 기능을 제공합니다.

또한 클라이언트가 쿠키를 전송하지 않도록 해야 합니다 (예: 인증 또는 사이트 환경설정)을 제공합니다. 예를 들어 사용자의 인증 쿠키가 일반 텍스트로 노출되었는데, 보안 보장은 사용자가 다른 모든 작업을 완료했더라도 전체 세션의 맞아!

이를 방지하려면 웹 앱을 변경하여 항상 쿠키에 보안 플래그를 설정하도록 하세요. 있습니다. 이 OWASP 페이지에서는 보안 플래그를 설정하는 방법을 설명합니다. 여러 앱 프레임워크에서 사용할 수 있습니다 모든 appl 프레임워크에는 플래그를 설정하는 방법이 있습니다.

대부분의 웹 서버는 간단한 리디렉션 기능을 제공합니다. 301 (Moved Permanently) 사용 을 사용하여 HTTPS 버전이 표준임을 검색 엔진과 브라우저에 알립니다. 사용자를 HTTP에서 사이트의 HTTPS 버전으로 리디렉션합니다.

검색 순위

Google에서는 HTTPS를 긍정적인 검색 품질로 사용합니다. 표시기를 사용합니다. 또한 Google은 Google 계정을 이전, 이전 또는 사이트를 유지관리하면서 파악할 수 있습니다. Bing은 또한 웹마스터 가이드라인을 참고하세요.

성능

콘텐츠 및 애플리케이션 레이어가 잘 조정된 경우( 스티브 수더스 참조), 나머지 TLS는 성능 문제점은 일반적으로 시스템의 전반적인 비용에 비해 애플리케이션입니다. 이러한 비용을 절감하고 상환할 수도 있습니다. TLS에 관한 조언 고성능 브라우저 네트워킹 일리야 그리고릭, 이반 리스틱의 OpenSSL 설명서방탄 가능한 SSL 및 TLS.

경우에 따라, TLS는 대부분의 전송 계층을 라우팅함으로써 HTTP/2가 가능합니다. 자세한 내용은 Chris Palmer의 HTTP/2 성능에 대한 자세한 내용은 Chrome Dev Summit 2014

리퍼러 헤더

사용자가 HTTPS 사이트의 링크를 따라 다른 HTTP 사이트로 이동하면 사용자 에이전트가 리퍼러 헤더를 전송하지 않아야 합니다. 이것이 문제가 될 경우 다음과 같이 해결할 수 있습니다.

  • 다른 사이트를 HTTPS로 이전해야 합니다. 심판 사이트에서 서버에서 HTTPS 사용 섹션의 이 가이드에 따라 내 사이트의 링크를 http://에서 사이트의 링크를 https:// 또는 프로토콜 기준 링크를 사용합니다.
  • 리퍼러 헤더와 관련된 다양한 문제를 해결하려면 리퍼러 정책 표준.

광고 수익

광고를 게재하여 사이트에서 수익을 창출하는 사이트 운영자는 HTTPS로 마이그레이션해도 광고 노출수가 감소하지 않습니다. 그러나 HTTP <iframe>가 HTTPS 페이지에서 작동하지 않습니다. 광고주가 HTTPS를 통해 게시할 때까지 사이트 운영자는 HTTPS로 이전할 수 없습니다. 광고 수익 손실 없이 사이트 운영자가 HTTPS로 이전할 때까지 광고주에게 HTTPS를 게시할 동기가 거의 없습니다.

이러한 교착 상태를 해소하는 프로세스를 시작할 수 있습니다. HTTPS를 통해 광고 서비스를 제공하고, HTTPS를 제공하지 않는 광고주에게는 적어도 옵션으로 만들 수 있습니다. 완료를 연기해야 할 수도 있습니다. 충분한 수의 광고주가 있을 때까지 사이트 내 URL을 상대 URL로 만들기 상호 운용되는지 확인해야 합니다