SSL 설정 - centos7, nginx
도메인을 무료로 등록한 사이트에서 SSL 인증서를 무료로 발급할 수 있는 사이트를 연결해주기에 바로 적용시켜 본다.
아래 사이트에서 무료로 발급할 수 있다.
SSL For Free - Free SSL Certificates in Minutes
Wildcard SSL Certificates Wildcard certificates allow you to secure any sub-domains under a domain. If you want to secure any sub-domains of example.org that you have now or in the future you can make a wildcard certificate. To generate wildcard certificat
www.sslforfree.com
1. 발급
(1) 도메인
와일드 카드 인증서도 있는데 PRO 딱지가 있는게 유료인가 보다.
(2) 기간
PRO 딱지 없는 90일 - 연장 가능하다고 한다.
(3) CSR
Auto-Generate 하고 넘어간다.
(4) 요금제
Free 선택
(5) 인증
이메일, DNS, 파일업로드 세가지 방법 중 하나로 인증을 한다.
파일업로드로 진행한다.
1번에서 파일을 다운로드 받고, .well-kown~ 폴더를 만들고 파일을 넣어두면 된다.
4번의 저 링크를 클릭했을 때 해당 파일의 내용이 보이게 하면 된다.
이를 위해 외부에서 접속이 가능해야하고 도메인이 연결되어 있어야 한다.
(6) 완료
(7) 다운로드
자신의 웹서버를 클릭하고 다운로드 한다.
이렇게 나온다.
(9) 인증서 목록 확인
wlrn.kro.kr.에 대한 90일짜리 인증서가 발행됬다고 뜬다. 만료일도 보인다.
2. SSL 연결
(1) https용 443 포트를 열어 준다.
# 추가
firewall-cmd --zone=public --add-port=443/tcp --permanent
# 방화벽 재시작
firewall-cmd --reload
# 포트 확인
firewall-cmd --zone=public --list-all
이후부터는 아래 사이트에서 알려주는 데로 하면된다.
https://help.zerossl.com/hc/en-us/articles/360058295894-Installing-SSL-Certificate-on-NGINX
(2) 인증서 넣기
/etc/ssl/에 다운받은 인증서를 넣어준다.
(3) 인증서 합치기
cat certificate.crt ca_bundle.crt >> certificate.crt
(4) nginx 설정 파일 수정
/etc/nginx/conf/default.conf 파일에서 SSL용 443포트를 추가한다.
ssl_certificate : 인증서 파일 지정
ssl_certificate_key : key 파일 지정
ssl_session_cache : SSL 세션 캐시 설정
ssl_session_timeout : SSL 세션 활성화 기준 제한시간 지정
ssl_ciphers : 암호화 방식
ssl_prefer_server_ciphers : 서버의 암호화 방식을 사용할지 사용자 암호화 방식을 사용하지 여부 지정
server {
listen 80;
server_name wlrn.kro.kr;
# 리다이렉트로 http 요청시 https로 보내기
location / {
# http -> https
return 301 https://$server_name$request_uri;
}
,..
}
# SSL
server {
listen 443 ssl;
server_name wlrn.kr.kr;
ssl on;
ssl_certificate /etc/ssl/certs/certificate.crt;
ssl_certificate_key /etc/ssl/certs/private.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /home/wlrn566/dev/web;
index index.html index.html;
}
}
(5) nginx 재시작
sudo service nginx restart
오류가 떳다.
Job for nginx.service failed because the control process exited with error code.
아래 명령어로 오류 내용을 볼 수 있다.
sudo nginx -t
ssl location 부분에서 root가 두개 적혀 있었다..
(6) 확인
portx에서 root 계정을 사용 못하니 힘들어서 root계정을 잠시 풀어준다.
(1) sshd_config 파일 수정
/etc/ssh/sshd_config 파일에서 PermitRootLogin 부분을 yes로 해준다.
(2) 서비스 다시 시작
systemctl restart sshd.service