환경 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 파일 내용
@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
'IT > 잡다구리' 카테고리의 다른 글
[Jenkins] 기존 등록된 서버 IP 변경시 배포 오류 해결방법 (2) | 2023.05.19 |
---|---|
[CSS] Chrome 108 업데이트 이후 프린트 미리보기 인쇄 이슈 해결방법 (0) | 2023.01.12 |
[Window+Apache] 로컬 커스텀도메인 설정 방법 , localhost customDomain (0) | 2022.12.01 |
[VSCODE] 코드 자동정렬 문제 (11.11 내용추가 - css 파일 저장시 자동정렬) (0) | 2022.10.11 |
[Vagrant] linux nginx 실행 지속실패 (0) | 2022.07.15 |