hexo 블로그를 http에서 https 보안 사이트로 전환해 보자!! (SSL 인증서 설치)

in SCT.암호화폐.Crypto6 years ago (edited)

안녕하세요.

굳헬로 @goodhello 입니다.

어제는 이제까지 만든 hexo 블로그에 애드센스를 신청하여 광고를 달기 위해 도메인을 달고, 사이트 보안을 위해 https URL을 사용하기 위해 SSL 인증서를 발급받다가 실패하고 잠시 쉬었는데요.

그래도 다행히 어찌저찌 해서 SSL 인증서를 발급 받고 https URL 연동까지 무사히 마치게 되었네요.

오늘은 SSL 인증서 발급 받는 법과 https 설정하는 법에 대하여 이야기 해보겠습니다.

먼저 https 는 이전에 사용하던 http(Hypertext Transfer Protocol)에 암호화 통신 채널을 설정하여 통신을 하는 보안이 강화된 Hyper Text Transfer Protocol over Secure Socket Layer 입니다.

이전에는 웹 사이트들이 다 http 를 사용했는데... 언젠가 부터 https 로 바뀌고 있던데.... 저는 그동안 관심을 가지지 않다가 이번에서야 제대로 알게 되었네요.

흔히 사용하는 웹 브라우저인 구글 크폼에서 http 로 사이트 접속을 하게 되면

http://goodhello.net

위와 같이 사이트 주소 옆에 주의 요함이라고 경고 메시지가 뜨는걸 확인할 수 있습니다.

아마도 http 를 사용하여 서버 클라이언트 사이에평문으로 전송을 하게 되면 정보 유출이 될 경우 크게 문제가 될 수 있기에, 암호화 채널을 이용하는 https 를 사용하는 것이 안전하겠지요.

그런데 https 를 사용하기 위해서는 SSL 인증서를 발급받아 서버에 적용시켜야 하는데요.

처음 해보는 저로서는 상당히 어려운 과정이었던 것 같습니다.

하지만 몇번의 시행 착오를 거치고 성공적으로 설치를 하고 나니 완전 뿌듯하네요.

보통 SSL 인증서를 발급하려면 인증기관에 유료로 발급 받을 수 있는데요.

그런데 무료 인증서도 있더라구요.

그래서 저는 무료로 발급 받을 수 있는 Let's Encrypt SSL 인증서를 발급 받아 보았습니다.

흔히들 웹서버에 리눅스를 많이 사용하시는데.. 제 컴퓨터는 윈도우 10 이기 때문에 윈도우용 SSL 인증서를 발급 받아야 합니다.

윈도우용 SSL 인증서는 Let's Encrypt 인증서 생성 프로그램인 WIN-ACME 를 통해서 무료로 발급 받을수 있는데요.

https://www.win-acme.com/

먼저 위의 사이트에 접속해서 win-acme를 다운로드 해주시면 되겠습니다.

다운 받은 파일을 적당한 폴더에 옮겨서 압축을 풀어줍니다.

그러면 wacs.exe 라는 실행 파일이 보일텐데요. 이 파일을 관리자 권한으로 실행해 줍니다.

혹은 명령 프롬프트를 관리자 권한으로 실행해서 작업을 하셔도 됩니다.

프로그램을 실행하면 다음과 같은 메뉴들이 출력되는데요.

IIS 웹서버를 사용중이면 N을 그게 아니라면 M 을 눌러 다른 옵션 메뉴를 엽니다.

저처럼 아파치 웹서버를 사용하거나 Nginx 서버를 사용중이시면 여기에서 2: Manual input 을 선택 해주시면 됩니다.

그리고

Enter comma-separated list of host names, starting with the common name:

본인의 호스트 네임 즉 도메인명을 넣어 주시면 됩니다.

저는 hexo 블로그 도메인으로 사용할 goodhello.net 을 넣었습니다.

그리고 여기에서 엔터를 해주시고 ( 1차 도메인으로 발급 받으면 서브 도메인도 자동으로 사용이 가능한 것 같네요.)

다음 메뉴에서 인증서를 내 컴퓨터에 저장하기 위해 1번을 선택해 주시면 되겠습니다.

Path to the root of the site that will handle authentication: 질문에서는 사이트의 최 상단 경로, 저 같은 경우 아파치 웹서버의 홈 경로인 D:\AutoSet8\public_html 를 넣어주었습니다.

Copy default web.config before validation? 질문에는 yes 나 no 아무거나 해도 상관 없을 것 같은데...전 yes 했습니다.

그리고 암호화 방식을 묻는 질문에서 일반적으로 많이 사용한다고 하는 RSA key 를 발급 받으면 된다고 하니 2 번을 선택합니다.

How would you like to store the certificate? 질문에는 Apache, nginx 사용자는 2번을 선택해 주시면 되겠고요.

Path to folder where .pem files are stored: 인증서 저장 경로는 본인이 원하는 경로를 넣어주시면 되겠습니다. 저는 D:\ssl 경로에 저장하겠습니다.

이제 저장 단계로 넘어가기 위해

Would you like to store it in another way too?: 질문에는 3번

Would you like to store it in another way too?: 질문에는 4번을 넣어주시면

인증서 저장 작업이 진행되는데...

이상하게 실패했다고... 그래서 다시하겠냐고 하는데 yes를 하니

성공적으로 인증서가 만들어 졌습니다.

인증서는 90일간 유효한가 봅니다. 3개월뒤 다시 갱신해야 하는... 아마도 무료 인증서라 그런가 봅니다.

이제 이 인증서를 웹사이트에 적용시키면 되는데요.

제가 사용하는 아파치 서버에는

먼저 웹서버 설정 파일인 http.conf 을 열어서

#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule ssl_module modules/mod_ssl.so

위의 mod_socache_shmcb.so mod_ssl.so에 달린 주석 #을 제거해 줍니다.

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so

그러면 이제 SSL 인증서를 적용할 수 있게 되는데요.

SSL 인증서를 적용하는 방법이 2가지 있던데, 하나는 웹서버 자체에 적용하는 방법이고, 하나는 VirtualHost를 생성해서 적용하는 방법이 있더라구요.

첫번째 방법인 웹서버 자체에 인증서를 적용하게 되면 이제 더이상 웹 사이트에 http로 접속이 불가능 하게 된다고 하니, 저는 두번째 방법인 VirtualHost를 생성해서 적용을 해보겠습니다.

두번째 방법은 어제 hexo 블로그에 도메인을 연결할때 사용했던 VirtualHost 설정 파일인 httpd-vhosts 을 열어서

Listen 443
<VirtualHost *:443>
    ServerName goodhello.net
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://localhost:4000/
    ProxyPassReverse / http://localhost:4000/
    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
     
    SSLHonorCipherOrder on
     
    SSLCertificateFile "D:/ssl/goodhello.net-chain.pem"
    SSLCertificateKeyFile "D:/ssl/goodhello.net-key.pem"
</VirtualHost>

원래 사용하던 http 포트인 80 포트 대신에 https 를 위한 443 포트로 goodhello.net 도메인 요청이 왔을대 hexo 블로그로 연결되도록 설정하였습니다.

그리고 SSL 인증서를 사용하기 위해서 SSLEngineon 시키고, SSLProtocol, SSLCipherSuite 값을 위와 같이 넣어주고 조금전에 만든 SSL 인증서를 SSLCertificateFileSSLCertificateKeyFile의 경로를 지정해 주면 되겠습니다.

그리고 웹서버를 재시작 시켜주면 끝입니다!!

차근 차근 제대로 잘 설정했다면

https://goodhello.net/

이제 https 보안이 설정된 https://goodhello.net/ 로 접속이 잘 되며, 경고 문구도 나오지 않게 됩니다.

이제 애드센스 신청을 위한 준비는 끝난 것 같구요.

내일은 이제 애드센스를 한번 신청해 보도록 하겠습니다.

오늘은 이 분야에 잘 모르는 분들은 좀 어려운 내용이었을것 같은데요. 그래도 혹시나 저처럼 아파치 서버를 사용하면서 hexo 블로그도 돌려 보시려고 하신다면 참고하시면 좋겠습니다.

앞으로 아파치 서버를 사용하는 Autoset 웹 개발 환경을 설치하고 워드프레스르르 설치하여 스팀잇 글을 가져와서 블로그 만드는 작업도 해볼 예정인데요. 그 과정이 끝나면 이 작업이 필요하게 될지도 모르겠네요.

그럼 앞으로도 계속해서 진도 나가보도록 하겠습니다.

오늘 하루도 파이팅 하시고~ 신나는 불금 보내시기 바래요~

Sort:  

Hi @goodhello!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 3.544 which ranks you at #4337 across all Steem accounts.
Your rank has dropped 3 places in the last three days (old rank 4334).

In our last Algorithmic Curation Round, consisting of 83 contributions, your post is ranked at #22.

Evaluation of your UA score:
  • You're on the right track, try to gather more followers.
  • The readers like your work!
  • Try to work on user engagement: the more people that interact with you via the comments, the higher your UA score!

Feel free to join our @steem-ua Discord server

But the end of all things has drawn near. Therefore be sober-minded and be sober unto prayers.(1 Peter 4:7)

Question from the Bible, Who can lead me to heaven?

Watch the Video below to know the Answer...
(Sorry for sending this comment. We are not looking for our self profit, our intentions is to preach the words of God in any means possible.)


Comment what you understand of our Youtube Video to receive our full votes. We have 30,000 #SteemPower. It's our little way to Thank you, our beloved friend.
Check our Discord Chat
Join our Official Community: https://steemit.com/created/hive-182074

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.084
BTC 60995.11
ETH 1571.77
USDT 1.00
SBD 0.47