IT/잡다구리

[XAMPP] 로컬 SSL 인증서, https 적용하기

월공 2022. 12. 28. 09:53
728x90
300x250

환경 XAMPP ( Apache + PHP + Mysql)


xampp 설치된 경로 필요 (기본값이면 대부분 C:\xampp\ 에 위치)
정 모르겠으면 아래처럼 Apache - Config 눌러서 나오는 conf 아무거나 들어가서 경로 확인하면됨


중점적으로 수정되는 파일은 아래와 같음

C:\xampp\apache\conf\extra\httpd-vhosts.conf
C:\xampp\apache\conf\extra\httpd-xampp.conf

C:\xampp\apache 진입 후 crt 라는 폴더 생성하고 안에 아래 두 파일 넣기

혹시 다운 안될때를 대비하여 코드 첨부.

make-cert.bat
0.00MB
cert.conf
0.00MB


make-cert.bat 파일 내용

@echo off
set /p domain="Enter Domain: "
set OPENSSL_CONF=../conf/openssl.cnf

if not exist .\%domain% mkdir .\%domain%

..\bin\openssl req -config cert.conf -new -sha256 -newkey rsa:2048 -nodes -keyout %domain%\server.key -x509 -days 3650 -out %domain%\server.crt

echo.
echo -----
echo The certificate was provided.
echo.
pause



cert.conf 파일 내용

[ req ]

default_bits        = 2048
default_keyfile     = server-key.pem
distinguished_name  = subject
req_extensions      = req_ext
x509_extensions     = x509_ext
string_mask         = utf8only

[ subject ]

countryName                 = Country Name (2 letter code)
countryName_default         = US

stateOrProvinceName         = State or Province Name (full name)
stateOrProvinceName_default = NY

localityName                = Locality Name (eg, city)
localityName_default        = New York

organizationName            = Organization Name (eg, company)
organizationName_default    = Example, LLC

commonName                  = Common Name (e.g. server FQDN or YOUR name)
commonName_default          = {{도메인 들어간다}}

emailAddress                = Email Address
emailAddress_default        = test@example.com

[ x509_ext ]

subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid,issuer

basicConstraints       = CA:FALSE
keyUsage               = digitalSignature, keyEncipherment
subjectAltName         = @alternate_names
nsComment              = "OpenSSL Generated Certificate"

[ req_ext ]

subjectKeyIdentifier = hash

basicConstraints     = CA:FALSE
keyUsage             = digitalSignature, keyEncipherment
subjectAltName       = @alternate_names
nsComment            = "OpenSSL Generated Certificate"

[ alternate_names ]

DNS.1       = {{도메인 들어간다}}


넣고나서 cert.conf 파일에 저 두곳은 내가 원하는 로컬 도메인으로 조정해줘야함

그러고 make-cert 파일 실행해서 Domain 은 cert.conf 에 입력했던거 그대로 입력 하고 나머지는 그냥 Enter 치고 넘겨도 무방

다 실행되고 나면 아래처럼 폴더가 띡 하고 생김

방금 생긴 폴더에 들어가면 , server 랑 server.key 파일 두개가 보일텐데 그중에 인증서 처럼생긴 아이콘의 server 라는 파일 실행

"인증서 설치" 버튼 클릭

저장소 위치 "로컬 컴퓨터" 선택

"모든 인증서를 다음 저장소에 저장" - 신뢰할 수 있는 루트 인증 기관

마침을 누르고 가져오기 완료되었다는 창 까지 뜨면 끝



그리고 이 부분은 전에도 포스팅 했었는데 다시 한번 복습삼아 첨부하자면 hosts 파일에다가 링크 넣는부분
수정하는 파일 : C:\Windows\System32\drivers\etc\hosts (메모장 등 관리자 권한으로 실행후 수정 가능)
방금 내가 발급 받았던 로컬 도메인 기입 , 이미 해놨으면 할 필요없음



httpd-xampp.conf 파일 내용추가

  # bug41.tw
 <VirtualHost *:80>
     DocumentRoot "C:\web_developer\myProject"
     ServerName bug41.tw
     ServerAlias *.bug41.tw
 </VirtualHost>

 <VirtualHost *:443>
     DocumentRoot "C:\web_developer\myProject"
     ServerName bug41.tw
     ServerAlias *.bug41.tw
     SSLEngine on
     SSLCertificateFile "crt/bug41.tw/server.crt"
     SSLCertificateKeyFile "crt/bug41.tw/server.key"
 </VirtualHost> 
 # bug41.tw

 

여기까지 했으면 이제 xampp 가서 apache 재시작 하고나서 https://bug41.tw로 접속 하면 아래처럼 인증서가 발급되어서 https 로 보안 연결이 된것을 확인 할 수 있다. (/home 은 내 개인 프로젝트 특성상 리다이렉트 된거라 무시)


마지막으로 http 들어갔을때도 무조건 https 로 강제 리다이렉트를 하고싶다면 httpd-vhosts.conf 쪽을 아래처럼 내용을 기입해주면 된다.
80 포트로 오는거에 있어서 무조건 https 로 Rewrite 를 하는 구문을 추가해주면 됨

<VirtualHost *:80>
    #ServerAdmin test@email.com
    DocumentRoot "C:\web_developer\myProject"
    ServerName bug41.tw
    DirectoryIndex index.php
    #ErrorLog "logs/dummy-host.example.com-error.log"
    #CustomLog "logs/dummy-host.example.com-access.log" common    
	
    RewriteEngine On
    RewriteCond %{SERVER_NAME} =bug41.tw
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>



사실 위 내용 대부분 아래 링크에서 참고했던것이고 , 다른곳에서 로컬 ssl 발급받는거 다 해봤는데 다 실패하고 안됐다가 유일하게 여기가 되갖고 까먹지 않고자 복습겸 메모삼아 기록해둔다.
답변 작성자 Mahdi Bashirpour 님에게 무한감사를 ..

출처 사이트
https://stackoverflow.com/questions/64800565/how-to-create-valid-ssl-in-localhost-for-xampp

728x90
300x250