원래는 공인 인증 기관에서 인증서를 발급받아야 겠으나, 이건 테스트용이므로 OpenSSL 을 이용해 자체 인증서를 쓴다.
일단 OpenSSL 을 설치한다.
배포처 : https://code.google.com/archive/p/openssl-for-windows/downloads
여기서 자신의 운영체체에 맞는 프로그램을 다운 받으면된다. (32bit 혹은 64bit)
일반적으로는 openssl-0.9.8k_X64.zip 를 사용하나, 간혹 인증키가 다르게 발급되는 경우가 있다면 openssl-0.9.8e_X64.zip 를 사용하면 된다고 한다.
다운 받은 파일을 압축을 풀어 적당한 디렉토리로 이동한다.
그런 다음, "bin" 폴더안의 "openssl.exe" 를 실행하면 되는데, 나의 경우 현재 디렉토리에서 "bin" 이라는 디렉토리를 붙여서 실행했는데, 이건 저기 있는 "openssl.cnf" 의 위치를 지정하기 편하게 하기 위해서 그런것일 뿐 별 다른 의미는 없다.
즉, 지정할 파일 경로와 저장할 파일 경로를 주의 해서 지정한다면 어디에서 실행 해도 별 상관은 없다.
genrsa -out 저장파일명 1024
이 명령을 실행해 개인키를 생성한다.
"openssl.exe" 를 실행하 위치에, 개인키 파일이 생성된 것을 확인할 수 있다.
req -config 환경파일 -new -x509 -days 기간 -key 개인키 -out 생성키파일명
이렇게 공개키를 생성한다.
개인키는 조금전에 생성한 파일을 지정하면 되고, days 옵션은 사용기간을 지정하는데, 여기서는 10년을 지정하였다.
그리고 공개키를 만드는 중에 몇가지 입력을 받는데, 대부분 그다지 신경쓸 필요는 없으나, Common Name 를 주의 해서 만들어야 한다.
여기서는 테스트 용이라 아무값도 넣지 않았지만, 원래는 사용할 도메인을 정확히 넣어야 한다. 만약 잘못 넣었을 경우 정확한 작동을 보장 할 수 없다.
이렇게 하면 공개키가 생성이 된다.
이제 키는 생성되었으니, 이것을 웹서버에서 사용하게 등록해 주어야 한다.
여기서는 IIS 를 이용한다.
일단 테스트용 사이트 하나 개설.
인증서를 등록하기 위해서는 "사이트 홈" 에서 지정해야 한다.
사이트 홈에서 "인증서 요청 만들기..." 를 선택하여 사이트 정보를 입력한다.
중요한 것은 "일반 이름" 이며 원래는 사용할 도메인이 지정되어 있어야 한다.
그냥 디폴트 값으로 놓고 확인...
요청 파일을 저장할 위치와 저장할 파일명을 지정하고 "마침". 그러면...
이렇게 요청 파일이 생성되어 있음.
원래는 이 요청 파일을 인증업체에 전달해서 인증키를 발급 받으나, 지금은 그냥 테스트용이므로 OpenSSL 자체 인증으로 인증키를 생성한다.
OpenSSL 가 설치된 디렉토리에서 인증키를 생성하기 위해서 "demoCA" 라는 폴더를 만든 후, 그 아래에 "newcerts" 라는 폴더를 하나 만들고, "index.txt", "serial" 이라는 아무내용이 없는 빈 파일을 하나씩 만들어 준다.
그리고 "serial" 이라는 파일에 "00" 이라는 숫자를 기록해 놓는다.
이 숫자는 키를 발급 받을 때 마다 증가한다.
ca -policy policy_anything -config 설정파일 -cert 공개키파일 -in 요청서파일 -keyfile 개인키파일 -days 사용일 -out 인증서파일명
위의 인증키 생성 명령어를 사용하면 ...
그럼 이렇게 인증키가 생성됨.
키가 생성되었으면, IIS 에서 "인증서 요청 완료..." 를 이용해 인증서를 등록한다.
이름은 대충 넣으면 되고...
그럼 이렇게 인증서가 등록됨...
인증서가 등록되었으니, 이제 https 통신을 사용할 사이트에 바인딩 해 준다.
바인딩 종류를 "https" 로 지정하면 인증서를 선택할 수 있는데, 여기서 조금전에 생성한 인증서를 선택한다.
아마 이런 에러가 뜰텐데, 원래는 안떠야 하는데, 왜 뜨는지 모르겠음.
인증서 체인에 문제가 있다는건, 최종 인증 서버에 도달하는 정보가 누락되어 있다는 얘긴데...
오류는 나지만, 무시하고 넘어가면, 그래도 사용은 가능함.
이렇게 "https" 로 페이지를 불러보면 https 로 페이지가 불러와 짐.
사설인증서 이므로 경고 페이지가 나오겠지만, 그냥 무시하고 진행.
이 상태에서는 "http" 도 가능하고 "https" 도 가능한 상태.
참고로 ...
"SSL 설정" 에서...
이렇게 "https" 통신만 가능하고 "http" 통신은 차단해 버릴 수가 있음.