SSL 인증서
ssl 인증서는 보통 유료인데 뭐 무료로 하자는 목소리와 프로젝트가 여기저기서 나왔나봄.
무료 ssl 인증서는 대표적으로 startSSL, Let's Encrypt(Certbot), WoSign 이렇게 3개를 찾았다.
Let's Encrypt를 써보자.
윈도에서는 잘 모르겠고 윈도우 10의 Ubuntu bash for Windows를 이용하면 가능하다.
리눅스에서
0. Git, Python + Pip + VirtualEnv를 미리 설치해놓는다.
1. let's encrypt git repository에서 소스를 받아와서 받아온 폴더로 이동한다.
$ git clone https://github.com/certbot/certbot DIRECTORY
$ cd DIRECTORY
2. 의존성을 설치한다. (설치가 안되어있을 때 letsencrypt-auto를 실행하면 의존성을 먼저 설치함)
$ ./letsencrypt-auto --help
처음에는 의존성을 설치하고, 그 다음부터 다시 $ ./letsencrypt-auto --help 를 하면 도움말이 겁나게 많이 뜬다
3. 인증서 발급한다. 오직 인증서를 발급하는 용도로만 사용할 것이므로 certonly 로 실행할거다.
$ ./letsencrypt-auto certonly --manual
4. 정보를 입력한다. (이메일, 사용할 도메인)
사용할 도메인의 경우 www 붙은거와 안붙은거 모두 이용할거면 둘 다 입력해줘야된다. (콤마나 스페이스로 구분)
5. IP 로그 수집 동의한다. 난 그냥 YES했다.
6. 도메인 인증을 한다.
중간에
http://www.domain.com/.well-known/acme-challenge/@#&*&^#$$%$&^$%$#^%^$%^$# before continuing :
@#&*&^#$$%$&^$%$#^%^$%^$#.@$^%&*$&^$%#%^#^%##
이런 요상한게 있는데, 이게 뭔소리냐면 윗 줄로 접속했을 때 아랫줄의 결과가 나와야 인정!이라는 소리인 것 같다.
아래에 나온부분은 웹서버 아직 구축 안됐을 경우 파이썬으로 임시웹서버 구축해서 도메인인증하는거같고, 나는 있으니깐
그냥 .well-known/acme-challenge 디렉토리를 만들어주고 그 안에 파일을 만들어준다.
파일 이름은 윗줄의 @#$%@%$@어쩌고, 파일 내용은 아랫줄의 @#$@#%$@.@#$%#$@#어쩌고 이렇게 만들어주면됨.
그리고 저 위에 주소를 인터넷창에 쳤을 때 아래 @#$@%$@#.@#$#^어쩌고가 들어있는 파일이 열리면 됨.
nginx라면 nginx 설정에 location을 추가해서 디렉토리를 꽂아주는부분을 따로 만들어도 좋음.
location /.well-known {
root /var/www/html/well-known; <- 자기 웹서버 파일이 있는 디렉토리 뒤에 well-known 넣어준다.
}
이런식으로 하고
웹서버 디렉토리에 /well-known/.well-known/acme-challenge/ 을 만들어주고 위에서 언급한대로 @#$@%@$%어쩌고 파일을 만들어주면됨.
그다음에 엔터치고 진행하면 뭐 성공했다 실패했다 뜰거임.
실패했다면 오류를 잘 읽어보고 다시 해보면 됨. 가끔 IP로그수집과 인증이 두번 이루어지는경우가 있음. 버그인가?
성공했다면 인증서가 저장된 경로가 출력된다.
인증서는 90일마다 renewal(갱신)해줘야된다. (유효기간을 90일로 해줌)
생성된 인증서를 잘 자기 서버의 /etc/nginx/conf.d/로 복사해오자. (꼭 이 폴더여야하는지는 잘 모르겠다)
nginx 설정
/etc/nginx/sites-available/default
server {
listen 80;
server_name www.domain.com;
return 301 https://$host$request_uri;
}
server {
listen 80;
listen 443;
server_name domain.com
return 301 https://www.$host$request_uri;
}
server {
listen 443 default_server ssl;
server_name www.domain.com;
ssl on;
ssl_certificate /etc/nginx/conf.d/fullchain.pem; <- cert를 등록해도 되지만 모바일에서 안되더라. 그래서 fullchain을 여기에 놓는다.
ssl_certification_key /etc/nginx/conf.d/privkey.pem;
location / {
proxy_pass http://127.0.0.1:[nodejs port no];
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
* 찾아봤는데 아파치서버에서는
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/fullchain.pem
이렇게 해주면 된다고함.
'개발세발' 카테고리의 다른 글
윈도우 10 bash 재설치 (0) | 2016.08.03 |
---|---|
keystone.js 홈페이지 구축 (0) | 2016.07.15 |
SSL HTTPS 웹서버 (nginx + let's encrypt(certbot)) (0) | 2016.06.30 |
홈페이지 재구축 (0) | 2016.06.28 |
OpenCV를 이용한 미니포켓볼 프로젝션 매핑 프로젝트 (5) | 2016.06.13 |
유전알고리즘으로 블록피하기 AI 만들어보기 (0) | 2015.12.21 |