우선 SSL
이란 서버와 사용자(브라우저) 간의 통신을 할 경우 정보를 암호화하고 도중에 해킹을 통해 정보가 유출이 된다고 하더라도 정보의 내용을 보호할 수 있는 보안 인증 솔루션 기술이라고 생각하면 됩니다.
보안 인증서가 적용되지 않은 일반 HTTP(80) 접속 했을 시에 각 브라우저 반응은 아래 사진과 같습니다.
저는 도메인이 하나이기 떄문에 단일 인증서를 사용해 등록해보려고 합니다.
종류 | 영문 표기 | 사용 용도 | 도메인(CN) 표시 예 |
---|---|---|---|
단일 인증서 | Single-Domain SSL | 하나의 도메인에만 적용 가능 | CN=foxydog.co.kr or www.foxydog.co.kr |
와일드카드 인증서 | WildCard SSL | 하나의 인증서로 서브 도메인 무제한 SSL적용 가능, 여러개의 서브도메인을 서버를 나눠서 운영해도 무제한 적용 가능 | CN=*.foxydog.co.kr www.foxydog.co.kr mail.foxydog.co.kr m.foxydog.co.kr... ※ 형태로 뒤에 .도메인만 같다면 앞 서브도메인은 무제한 이용 가능 |
멀티도메인 인증서 | Multi-Domain SSL | 하나의 인증서로 여러 도메인 등록가능 단, 무제한은 아니며 대체로 99개까지 등록 가능 | CN=foxydog.co.kr CN=testfoxy.co.kr CN=foxytest.com... ※ 전혀 다른 도메인으로 등록 가능 |
우리는 또 돈이 없응께 무료인 곳을 찾아 다녀야지요~
zerossl 요기~ 이름부터가 zero로 시작하는게 마음에 든다!
해당 홈페이지 들어가면 보이는 메인 화면인데, 지금 이 과정을 보고 있다면 도메인 주소는 있다고 생각하고 얘기하겠습니다~!!
아래 빨간색 부분에 가지고 있는 도메인 주소를 입력해주면 됩니다.
그러면 해당 도메인에 대해 SSL 발급 가능한지 여부 확인 가능하고, 가능하다면 다음 단계를 눌러줍니다.
90일로 해야 돈 내지 않습니다! 90일로 체킹하고 다음 단계를 눌러줍니다.
이건 자동 생성으로 해놓고 빠르게 다음 단계~
그럼 우리는 우선 무료로 SSL 인증서 발급이 가능하다고 나오는데 호딱 다음 단계로 넘어가줍니다~!!
도메인 확인 부분에는 총 3가지 방법이 존재합니다.
- 이메일 확인 인증 - 제일 심플한 방법이지만 해당 방법으로 하지 못하는 경우가 많습니다. 이메일 주소를 직접 입력하는게 아니라 도메인을 구입했을 때 개인(법인) 소유자가 등록한 이메일 주소가 자동으로 뜨며 그 중 맞는 것을 선택해 사용하면 됩니다. 하지만 저는 해당하는 이메일이 없어 인증할 수가 없었습니다ㅠㅠ
- DNS (CNAME) 인증 - DNS의 경우 도메인 네임서버에 직접 CNAME을 등록해 인증하는 방식을 의미합니다. 저는 해당 방법으로 인증했습니다.
- HTTP File Upload 인증 - 서버 내 해당 파일을 넣어두고 직접 인증하는 방법입니다.
저는 2번으로 진행하였으니 2번에 대해 설명하겠습니다. 우선 도메인 확인 부분에서 보이는 화면입니다. 위에서 얘기했다시피 네임서버에 직접 CNAME을 등록해 인증해야합니다.
저는 freenom에서 구입했기 때문에 해당 사이트로 진입하겠습니다.
해당 부분에 진입했다면 4가지를 설정해주어야 합니다. 저는 이전에 SSL 인증서 등록 절차를 위해 한 번 해봐 값이 다른점 양해부탁드림당~
- Name - 위의 이름 부분
ex)_C480927...
값 입력- Type - CNAME 입력
- TTL - 전파시간으로 3600(이하)으로만 설정하면 상관없습니다.
- Targer -
ex) 2A2167...
값 입력
DNS 등록이 완료되었다면 5~10분 정도 내에 완료될텐데, 그러면 다시 돌아와 [Next Step] ▷ 다음 단계에서 바로 [Verify Domain] 인증합니다.
해당 사진은 인증서 하나 더 등록할거면 돈내라 해서 외부에서 퍼왔습니다ㅎㅎ,,
해당 방법은 인증 기관에서 경로와 코드를 보내주면 해당 정보를 보여주게 서버에서 설정해주면 됩니다.
[도메인]/.well-known/pki-validation/[파일 경로].txt
nginx 내 conf.d나 sites-availabe 내 설정한 파일 내 다음과 같이 설정해주면 됩니다.
server {
listen 80;
server_name {{도메인 이름}};
location /.well-known/pki-validation/ {
root /var/tmp/;
add_header Content-Type "text/plain";
}
}
위의 location 부분에 설정한 경로에 기관에서 전달받은 파일명은 경로.txt로 내용은 보내준 코드로 명시해 주면 됩니다.
vi /var/tmp/.well-known/pki-validation/[경로].txt
[보내준 코드]
해당 엔드포인트로 접속 시 내용이 정상 확인되면 끝입니당~
나는 Nginx 사용하고 있으니깐 여러가지 옵션 중 Nginx 선택 >> 인증서 다운로드
해주면 됩니다.
인증서를 다운 받으면 certificate.crt, ca_bundle.crt, private.key
이렇게 총 3개가 존재하고, 이제 아래 작업들을 차례대로 해야합니다.
- 인증서 서버로 업로드
- .crt 파일 병합
- 가상 호스트 파일 편집(Nginx)
- 서버 재실행
- 끝
/etc/ssl/<추가 디렉터리>/
경로에 업로드가장 먼저 위의 인증서 파일(certificate.crt, ca_bundle.crt 및 private.key)을 선택한 디렉토리의 NGINX 서버에 업로드해야 합니다.
저는 /etc/ssl/oddong.tk/
경로에 업로드 해주었습니당
NGINX는 SSL 설치를 허용하기 위해 모든 .crt 파일을 병합해야 합니다. certificate.crt 및 ca_bundle.crt 파일을 병합하려면 다음 명령을 실행해야 합니다.
# .crt 파일 병합
cat certificate.crt ca_bundle.crt >> certificate.crt
HTTP는 80으로 접속하지만, HTTPS는 443 포트로 접속하게 됩니다. 가운데 표시 위쪽을 추가해주면 됩니다.
server {
listen 443 ssl;
ssl on;
ssl_certificate /etc/ssl/<추가 디렉터리>/certificate.crt;
ssl_certificate_key /etc/ssl/<추가 디렉터리>/private.key;
=================== ↑↑↑ 추가 ↑↑↑ ===================
server_name your.domain.com;
access_log /var/log/nginx/nginx.vhost.access.log;
error_log /var/log/nginx/nginx.vhost.error.log;
location / {
root /home/www/public_html/your.domain.com/public/;
index index.html;
}
}
마지막으로 변경 사항을 적용하려면 NGINX 서버를 다시 시작해야 합니다. 아래 명령을 실행하여 NGINX 서버를 다시 시작할 수 있습니다.
systemctl restart nginx
절차는 끝났고 성공적으로 연결된 것을 볼 수 있다~~~ 나이쏴~