우분투에서 SSL 인증서 및 개인 키를위한 최적의 위치


62

우분투에서는 인증서에 서명하는 데 사용되는 개인 키 (nginx에서 사용)에 가장 적합한 장소 인 것 같습니다. /etc/ssl/private/

답변 은 인증서가 들어가야 /etc/ssl/certs/하지만 안전하지 않은 장소처럼 보입니다. 수행 .crt파일을 안전하게 보관해야하거나 공공 생각입니까?


19
원하는 .crt경우 타임 스퀘어 광고판에 올려 놓을 수 있습니다 .
ceejayoz

답변:


48

.crt 파일은 연결된 모든 항목으로 전송됩니다. 공개입니다. ( chown root:rootchmod 644)

개인 키 위치에 추가하려면 제대로 고정하고 있는지 확인하십시오. ( chown root:ssl-certchmod 640)


그 디렉토리가 기본적으로 g + s가 아닌 이유가 궁금합니다.
Collin Anderson

2
반드시 그럴 필요는 없습니다. 디렉토리는 0750이므로 그룹에 속하지 않은 사용자는 디렉토리를 탐색하여 파일을 읽을 수 없습니다.
womble

2
ssl-cert가 우분투에서 잘못된 그룹 이름 인 것 같습니다. 어쩌면 그것은 root : root 대신 chown이어야합니다
Atifm

1
@Atifm ssl-cert 인증서 그룹은 16.04 또는 18.04에 도입되었습니다. 나는 어느 것을 기억하지 못한다.
DylanYoung

1
@DylanYoung : 확실히 Ubuntu 12.04에 있으며, 패키지에 의해 만들어졌으며 ssl-cert, 아마도 다른 것들 중에서도 자체 서명 된
snakeoil

35

개인 키 파일 을 올바르게 보호하기 만하면 어디에 두 었는지는 중요하지 않습니다 . 공인 인증서는 공개; 보호가 필요 없음-서버 권한 또는 기타.

답변을 확장하기 위해 기본 위치를 사용하지 않습니다 /etc/ssl.
백업 및 기타 이유로 인해 모든 광산을 별도의 영역에 보관하는 것이 더 쉽습니다.

Apache SSL의 경우에있는 /etc/apache2/ssl/private"루트 영역"또는 이와 유사한 루트 영역을 유지 /etc/합니다.

설정 예

이 게시물은 Ubuntu (Debian) + Apache를 대상으로하지만 대부분의 시스템에서 작동합니다.-
주어진 구성 (apache / nginx / etc)에서 권한을 적용하고 위치 / 경로를 업데이트하십시오.
SSL 키 파일이 올바르게 보호 된 경우 (디렉토리 및 파일) 문제가 없습니다. 메모를 참고하십시오!

디렉토리를 작성하십시오.

sudo mkdir /etc/apache2/ssl
sudo mkdir /etc/apache2/ssl/private
sudo chmod 755 /etc/apache2/ssl
sudo chmod 710 /etc/apache2/ssl/private

참고 : 우분투에서 그룹을
chmod 710지원합니다 ssl-cert.
(댓글 참조) on
권한을 설정해도 정상적으로 작동합니다.700/etc/apache2/ssl/private

SSL 파일을 배치하십시오.

올려 공중 에서 중간 인증서 (들)와 함께 WWW SSL 인증서 (들)을 /etc/apache2/ssl
넣어 개인 SSL 키 (들)/etc/apache2/ssl/private

소유자 설정 :

sudo chown -R root:root /etc/apache2/ssl/
sudo chown -R root:ssl-cert /etc/apache2/ssl/private/

참고 : ssl-cert 그룹
이없는 경우 위의 줄에서 'root : root'를 사용하거나 두 번째 줄을 건너 뛰십시오.

권한 설정 :

공공 인증서

sudo chmod 644 /etc/apache2/ssl/*.crt

개인 키

sudo chmod 640 /etc/apache2/ssl/private/*.key

참고 :
Ubuntu ssl-cert 그룹으로 인해 그룹 권한이 READ (640)로 설정되었습니다. '600'도 좋습니다.

Apache SSL 모듈 활성화

sudo a2enmod ssl

모든 Apache 사이트 파일을 편집하고 활성화

(마지막 단락 참조) *

sudo nano /etc/apache/sites-available/mysiteexample-ssl.conf
sudo a2ensite mysiteexample-ssl
#             ^^^^^^^^^^^^^^^^^ <-Substitute your ".conf" filename(s)

Apache2 서비스를 다시 시작하십시오.

sudo service apache2 restart

또는

sudo systemctl restart apache2.service

끝난. 새 SSL 사이트를 테스트하십시오.

* 이것은 다시 질문을 넘어서지 만 기본 Apache SSL 사이트 구성 파일 ( sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/mysiteexample-ssl.conf)을 간단한 (Ubuntu / Debian) Apache / SSL 'conf'파일에서 일반적으로 사용되는 기본 지시문 / 디렉토리의 좋은 시작점 / 예로 복사 할 수 있습니다. . 일반적으로 자체 서명 된 SSL 인증서 + 키 (뱀 고기), CA 번들 및 지정된 SSL 사이트에 사용되는 공통 지시문을 가리 킵니다 .

복사 한 후에는 새 .conf 파일을 편집하고 위의 새 정보 / 경로에 따라 필요에 따라 추가 / 제거 / 업데이트 한 다음 실행 sudo a2ensite mysiteexample-ssl하여 활성화하십시오.


왜 / etc / apache2 / ssl / private에 대한 권한을 710으로 설정해야하는지 잘 모르겠습니다. 디렉토리에 대한 읽기 비트를 설정하지 않고 (그룹에 대한) 디렉토리에 대한 실행 비트를 설정하는 것은 나에게 의미가 없습니다. 750으로 설정 했습니까?
chriv

@chriv 방금 우분투 기본 SSL 영역에서 설정을 보는 방법에 따라 권한을 설정했습니다. / etc / ssl / certs 및 / etc / ssl / private & ssl-certs 그룹 사용을 참조하십시오.
bshea

1
가능한 많은 답변이있는 일반적인 질문에 대한 아주 훌륭하고 자세한 설명. 감사합니다. 몇 가지 사항 만 추가하려면 <VirtualHost *:443>섹션에 다음 sites-available/mysite.conf과 같은 인증서를 포함시켜야합니다.SSLEngine on SSLCertificateFile /etc/apache2/ssl/mysite.crt SSLCertificateKeyFile /etc/apache2/ssl/private/mysite.key
George Dimitriadis

BTW-: 80과 : 443 구성을 하나의 Apache ".conf"파일에 결합하는 것도 가능합니다. 어쨌든 : 443 / SSL에서 포트 : 80에 도달하는 모든 것을 리디렉션합니다. 또한 기본 SSL 설정을 .conf 파일에 넣고 추가 '상세한'SSL 설정 파일 (예 : 암호 사용 등을 설정하기 위해)을 만들어 가상 영역 외부의 모든 .conf 파일에 포함시킬 수도 있습니다. 이 설정을 사용하여 SSL을 '강화'하고 각 가상 사이트 .conf에 포함시킵니다. 이런 식으로 SSL Labs 에서 A +를받을 수 있습니다 .
bshea

10

여기에 모든 응답은 OK 것,하지만 난 내가 발견 한 것은 당신이 체인 파일을 마련하는 중간체 또는 뿌리와 인증서를 연결하는 경우 ... 문제가 언급하고자 하지 않는 것을 넣어 /etc/ssl/certs때 때문에, c_rehash루트 또는 중간에 인증서로 인해 해시 심볼릭 링크가 생성 될 수 있습니다.

그런 다음 나중에 인증서가 만료되어 제거하고 다시 실행할 c_rehash줄 모르는 경우 /etc/ssl/certs디렉토리 에서 해시 심볼릭 링크가 손상되어 로컬 컴퓨터가 연결을 시도 할 때 이상한 일이 발생하기 시작합니다. SSL이며 유효성을 검사 할 루트를 찾을 수 없습니다. 예를 들어 curl으로 갑자기 갑자기 시작했습니다.

curl: (60) SSL certificate problem: unable to get issuer certificate

오래된 .crt 및 연결된 .pem 파일을 정리 한 직후에 /etc/ssl/certs.

최소한 다른 체인을 다른 곳에 저장하면이 문제를 피할 수 있습니다. 나는 /etc/ssl/local_certs인증서와 체인을 보유 하기 위해 결국을 만들었 으므로 CA 인증서가 엉망이되어 길을 잃지 않았습니다./etc/ssl/certs


2

개별 파일 / 디렉토리에 대한 권한과 같이 설정되어있는 경우 안전하지 않은 장소 정말이 아니다 chown root :0 private.keychmod 600 private.key그래서 루트 만이 읽을 수는. CSR 및 인증서 파일은 말 그대로 민감하지 않습니다.

이러한 권한을 사용하면 언급 한 경로와 / usr / local / ssl이 좋습니다.


1
개인 키에 액세스하는 응용 프로그램이 루트가 아닌 사용자로 실행되는 경우가 종종 있습니다. ssl-cert 그룹에 대한 액세스 권한을 유지하는 것이 좋습니다.
Shane Madden

1
아파치와 같은 웹 서버는 루트 '부모'프로세스를 생성하고 nginx를 가정하면 관련이 있습니다.
Jonathan Ross

1

올바른 위치 :

  • /etc/ssl/certs/에 대한 .crt파일
  • /etc/ssl/private에 대한 .key파일

소유자root:root둘 다에 있어야합니다 ( sudo chmod root:root <file>필요한 경우 변경하는 데 사용).

권한 :

  • 644에 대한 .crt파일
  • 600에 대한 .key파일

이 작동합니다 nginx.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.