아.. 정말 오랜만에 글을 써봅니다. 1년인가요.

어차피 이 블로그를 그렇게 많이 보지 않아서 여러모로 정말 쓸모가 없어지고 있는 블로그입니다.


그러던 찰나에 정리해 두고 싶은 글을 써야되는 일이 생겨버렸습니다.

바로 Let'sEncrypt입니다.


정말 기나긴 삽질을 했습니다. 개발하다 말고 꼬박 하루를 삽질했네요 ㅡㅡ;

개발할 것도 많은데; 그냥 bonobo git 같은거 쓰지 말고 bitbuket같은걸로 옮길까봐요;


일단 기왕 해결한거 짧게 글을 써보게씁니다.


겪은 문제는 크게 2가지 입니다.

첫번째 문제는 기존에 돈을 주고 산 인증서와 LetsEncrypt 인증서간의 문제였습니다.


IIS에서는 도메인 이름과 IP를 바인딩 해주는 기능이 있습니다.


서버 아이피가 192.168.0.2 라고 할 때,

사이트 이름 : 블로그

프로토콜 : http / 주소 : 192.168.0.2 / 포트 : 80

도메인 : youtil.wo.tc


사이트 이름 : 기본사이트

프로토콜 : http / 주소 : 192.168.0.2 / 포트 : 80

도메인 : non.youtil.wo.tc


이런식으로 해두면 non.youtil.wo.tc는 기본사이트쪽 홈으로 이동하고 youtil.wo.tc는 블로그로 이동하는 기능말입니다.


와일드카드 인증서가 아니라 SAN(주체 대상 이름)인증서를 사용하고 계신 분들이라면 IIS7에서는 별 괴상한 방법으로 인증서를 추가하셨겠지만,

다행히도 IIS 8에서는 SNI라는걸 지원하죠. 한글 IIS라면 도메인 입력하는 란 아래 서버 이름 표시가 있는데 이게 SNI입니다.


프로토콜을 https로 선택한뒤 인증서를 선택하고 SNI에 체크하면 모든게 만사 OK죠.


-하지만 여기서 LetsEncrypt simple windows를 사용하면 꼬일 수 있습니다!-


위에 서 든 예의 non.youtil.wo.tc의 도메인을 가진 기본사이트에 SSL을 LetsEncrypt로 추가했는데 youtil.wo.tc에 접속을 하니 인증서에 문제가 있다고 뜨는겁니다.

문제를 확인해보니 이 인증서는 non.youtil.wo.tc에서만 사용 할 수 있다는군요.


SNI를 켜면 만사 OK아니었나요!


이렇게 꼬였을 때는 cmd를 관리자 권한으로 여시고

다음과 같이 타이핑하시면 됩니다. 뒤에 있는 아이피와 포트 번호는 여러분의 상황에 맞게 수정하시기 바랍니다.


netsh http delete sslcert ipport=192.168.0.2:443



두 번째 문제는 인증서 해지(revocation)와 관련된 문제입니다.

크롬이나 IE나 엣지는 잘 되는데 git이 작동을 안하더라구요.


이 문제는 https://www.sslshopper.com/ssl-checker.html <- 이 사이트에서도 점검해 보실 수 있습니다.


일단, git을 사용 할 때 나온 에러는 아래와 같습니다.

next InitializeSecurityContext failed: Unknown Error (.....) 해지서버가 오프라인 상태이므로 해지 상태를 확인할 수 없습니다.


하아. 이 문제를 해결하는게 가장 어려웠습니다.

아래 포럼이 저에게 해결 방안을 주었습니다.

만약 위와 같은 문제가 생겼다면 주저하지말고 아래 링크로 들어가주세요.


https://community.letsencrypt.org/t/iis-8-5-building-incorrect-chain-with-lets-encrypt-authority-x3/13320/84


이 문제는 Let'sEncrypt 초창기에 사용했던 인증서가 아직도 남아있어서 지금은 사용되지 않는 중간자 인증서를 IIS쪽에서 계속해서 중간자 인증서로 넘겨주니까 생기는 문제였습니다.


그런데 저의 경우는 위 포럼에서 나온 방법대로 X1을 전부 지우고 IIS를 몇 번이나 다시 시작해도 고쳐지질 않았습니다 ㅂㄷㅂㄷ;

그래서 letsencrypt에 관련된 폴더(C:\Users\[UserName]\AppData\Roaming\letsencrypt-simple-window~~~~~)를 지운 후 letsencrypt로 인증를 발급받은 사이트의 폴더에 들어가서 관련 파일을 삭제한 다음에 IIS에서 letsencrypt로 발급받은 모든 인증서를 지웠습니다.


그 다음 다시 한번 letsencrypt로 발급받으니 모든 문제가 해결되었습니다. 메데타시메데타시.


'Web > IIS' 카테고리의 다른 글

IIS 8.5에 Redmine(3.2.0)을 올려보자.  (0) 2015.12.26
IIS 핫링크 방지하기 (Hotlink Protection)  (0) 2014.08.04

Windows Server에서 Hyper-V에 Docker를 올려서 Docker gitlab을 잘 사용하다가 gitlab의 무거움에(...) 포기하고 Bonobo Git Server로 다시 갈아탔습니다.

사실 아직 저는 학생인지라 개인적으로 개발하는게 많아 이슈 관리 따위 그다지 필요하지 않지만 그래도 있는게 없는것보단 재밌잖아요?
오늘도 시간이 없는 여러분 대신에 시간이 넘쳐나는 제가 삽을 들어보았습니다. 짞짞. 잉여인간 만세.

IIS의 웹 플렛폼 설치 관리자를 이용하면 쉽게 Redmine 2.3버전을 설치 할 수 있습니다.
3.2.0 버전도 이를 이용하면 아주 쉽게 설치 가능합니다.
그래서 오늘의 주인공은 이걸 아주 쉽게 해주는 웹 플렛폼 설치 관리자 Helicon Zoo 입니다!

자 먼저 웹 플랫폼 설치 관리자를 설치해야합니다.

https://www.microsoft.com/web/downloads/platform.aspx


링크 따라 가셔서 설치하신 후에는 Helicon Zoo를 설치해야합니다.
설치 방법은 공홈에 아주 잘 나와있네요.

http://www.helicontech.com/zoo/install.html

이 과정까지 완료하셨다면 웹 플랫폼 설치 관리자의 탭에 Zoo 가 추가되었을 겁니다.
Zoo를 클릭해서 스크롤 내리시다보면 Redmine 2.3 버전을 발견하실 수 있습니다.

구버전 쓰시려면 여기까지만 따라하셔도 상관 없습니다. 2.3 버전도 있을 기능 다 있습니다.

이제 본격적으로 시작해봅니다.

준비물 :

1. 위 작업 완료
2. SQL Server, MariaDB, MySql, etc...
3. 아래 링크에서 프로그램 다운로드 받기.

http://www.redmine.org/projects/redmine/wiki/Download
http://railsinstaller.org/en (2.00 버전 추천)

작업 시작

1. railsinstaller을 설치합니다. path는 되도록이면 Ruby200과 같이 해주세요.(C:\Ruby200) 나중에 applicationHost.config를 변경하면 되니 그냥 설치하셔도 됩니다. 뒤에 200은 버전이니 상황에 맞게 잘 변경해주세요.

P.S. 이미 Ruby를 설치하신 분들만 보시면 됩니다. 위 과정 따라오신 분은 2로 넘어가주세요.
사실 이 과정을 한다고 해서 진짜로 되는지에 대한 테스트는 해보지 않았습니다. 양해부탁드립니다.

아래 과정으로 안되면 Helicon Zoo에서 Redmine을 설치하신 후 Ruby190 폴더의 devkit폴더에서 mingw폴더를 복사하여 Ruby200에 붙여넣기, 중복된 파일은 건너띄기 해주시기 바랍니다.

http://rubyinstaller.org/downloads/

위 링크에서 자신의 Ruby 버전과 맞는 Developer kit을 다운로드 받아주신후 설치해주세요.
설치는 http://broken-radio.tistory.com/9 글의 3번 과정을 따라하시면 됩니다.

그 후 아래 링크를 클릭하셔서 iconv를 다운로드 받습니다. 아래는 mingw 32bit버전입니다. mingw64 쓰시는 분은 64비트로 받으셔야 할겁니다.

http://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/libiconv-1.14-3/libiconv-1.14-3-mingw32-dll.tar.lzma/download

다운로드 받은 iconv의 압축을 해제하고 나온 dll을 아래 두 폴더에 복사해줍니다.

[Ruby Devkit Path]\mingw\bin\
[Ruby Devkit Path]\mingw\libexec\gcc\mingw32\[Version]\

아래의 3번 과정을 진행하셔서 나온 커맨트 창에

gem install json -v 1.8.3
gem install tiny_tds -v 0.6.2


2. 다운로드 받은 Redmine 3.2.0을 inetpub나 Redmine을 돌릴 디렉터리에 압축을 풀어줍니다. 그 후 IIS에 사이트를 추가해줍니다.

3. 시작 - 모든 프로그램 - Ruby[Version] - Start Command Prompt with Ruby를 관리자 권한으로 실행해줍니다.

4. Redmine 압축을 해제한 폴더로 들어갑니다. 여기서는 그냥 C:\inetpub\Redmine으로 하겠습니다.

 cd C:\inetpub\Redmine
 gem install bundler
 bundle install -–without development test rmagick
 bundle exec rake generate_secret_token

명령어를 순서대로 입력해줍니다.

5. DB를 설정합니다. C:\inetpub\Redmine\config\database.yml.example을 복사 합니다.
  5.1 복사한 파일에서 .example을 지우고 notepad++과 같은 편집기를 이용해서 열어봅니다.
  5.2 exapmle을 보면서 자기에게 맞는 DB를 설정합니다. 인터넷에 Redmine DB설정 방법은 많이 있습니다.

6. rake db:migrate 명령어를 입력합니다.
  tiny_tds 문제가 발생하시는 분은 알려주세요. 아마 1번에서 PS과정을 따라하신 분은 이 에러가 발생할 수 있습니다.

7. IIS를 설정합니다.
  7.1 Ruby의 설치 경로가 C:\Ruby200이 아니신 분이나 버전이 더 높으신 분은 아래 작업을 해주세요.
       - C:\Windows\System32\inetsrv\config\applicationHost.config를 메모장이나 편집기로 열어주세요.
       - 각자 사용하고 계신 편집기의 찾기 기능으로 ruby를 검색해주세요.
       - 아래 사진의 빨간색 부분과 주황색 부분을 확인하신 후 주황색 부분을 Ruby의 인스톨 경로로 변경해주세요.


  7.2 IIS를 실행합니다.
  7.3 추가한 Redmine사이트를 누르신 후 IIS 그룹에서 Helicon Zoo 아이콘을 클릭합니다.
  7.4 상단의 New 버튼을 누릅니다. 이름은 상관 없는것 같습니다. 다른 누군가가 볼 때 이해 할 수 있는 범위에서 알아서..
  7.5 상단에 Engine을 누르신 후 7.1과정에서 변경한 name을 가진 아이를 선택하고 확인을 누릅니다.
  7.6 나머지는 사진을 참고해서 설정해주세요. 특히 빨간색 테두리는 자신의 환경에 맞게 잘 설정해주셔야합니다. GEM_HOME같은 경우에는 Ruby의 gem이 설치되는 디렉터리로 설정해주시면 됩니다.




삽질하는데 도움을 준 사이트 :

http://coreboarder.com/blog/?p=465

'Web > IIS' 카테고리의 다른 글

IIS8 에서 LetsEncrypt simple windows 문제  (0) 2017.04.16
IIS 핫링크 방지하기 (Hotlink Protection)  (0) 2014.08.04

Windows 8.1 기준이긴 하지만 어지간한 구형 윈도우가 아닌 이상 다 될 거라 본다.


일단 URL 재작성 (Rewrite)부터 설치해야 하는데 이미 있는 분들은 생략한다.

http://www.iis.net/downloads/microsoft/url-rewrite

위 링크에서 'Install this extension' 클릭 후 대충 확인 눌려주고 설치를 해준다. 



설치가 대략 끝나면 URL 재작성이 생기는데 (없으면 끄고 켠다.) 원하는 사이트에서 더블 클릭으로 들어가 본다.


여기서 오른쪽 메뉴에서 '작업 - 규칙 추가' 빈규칙으로 확인을 눌러준다.


이제 아무것도 없는 빈 페이지가 나온다.

인바운드 규칙 편집에서 이름은 아무거나 원하는 걸로 입력한다.


URL 검색에서는 요청한 URL: 패턴과 일치, 사용: 정규식

패턴은 대/소문자 무시를 체크한 후 밑에 값을 넣어준다.

.*\.(jpg|jpeg|png|gif|bmp)$

조건에서는 논리 그룹화 모두 일치로 설정하고 밑에 조건에 따라 캡처 그룹 추적은 체크하지 않는다.

추가를 눌려준 후 밑에 값처럼 넣어준다.

조건 입력: {HTTP_REFERER}

유형: 패턴과 일치하지 않음

패턴:

^$ 

^http://www.mydomain.com/.*$

^http://mydomain.com/.*$

대/소문자 무시


마지막으로 작업 유형 재작성 나머지 체크는 모두 해제하고

URL 재작성에 원하는 링크나 보여줄 이미지로 연결해주면 된다.


이제 이미지 링크를 누군가가 퍼가도 위에 작성한 링크로 이미지가 출력된다.


보너스! 위 작업을 좀 더 간단하게 작업하기!

web.config 편집하기를 눌려서

<!--?xml version="1.0" encoding="UTF-8"?-->
<configuration>
    <system.webserver>
        <rewrite>
            <rules>
                <rule name="Prevent hotlinking">
                    <match url=".*\.(jpg|jpeg|png|gif|bmp)$">
         		 <conditions>
        		    <add input="{HTTP_REFERER}" pattern="^$" negate="true">
        		    <add input="{HTTP_REFERER}" pattern="^http://www.mydomain.com/.*$" negate="true">
        		    <add input="{HTTP_REFERER}" pattern="^http://mydomain.com/.*$" negate="true">
                    </add></add></add></conditions>
                    <action type="Rewrite" url="/hotlink-ok/noimage.jpg" appendquerystring="false">
                </action></match></rule>
            </rules>
        </rewrite>
    </system.webserver>
</configuration>


위에 코드를 붙여넣기 후 저장하면 좀 더 간단하게 작업이 가능하다.


참조한 글: http://www.gamedevforever.com/317

'Web > IIS' 카테고리의 다른 글

IIS8 에서 LetsEncrypt simple windows 문제  (0) 2017.04.16
IIS 8.5에 Redmine(3.2.0)을 올려보자.  (0) 2015.12.26

+ Recent posts