티스토리 뷰
운영서버에 새로운 본인인증 OR 결제모듈을 적용시키고자
개발서버(로컬)에서 테스트를 하려고 할 때 HTTPS가 필요합니다.
결제 SDK는 자체 제작을하는데 라이브러리 중 일부는 HTTPS 환경에서만 정상 작동을 하도록 만들어졌기 때문입니다.
만약 HTTP환경에서 결제모듈을 띄우려고한다면 다음과 같은 오류가 발생합니다.
Ex) [mTranskey Error] : Cannot load TransKey. Network is not available.
따라서 개발환경에서 테스트를 진행하기위해 HTTPS를 적용시켜 보겠습니다.
현재 로컬의 개발환경은
Tomcat7 버전(과거) / Spring / Windows / Chrome을 사용 중입니다.
1. mkcert 다운로드
https://github.com/filosottile/mkcert/releases
Releases · FiloSottile/mkcert
A simple zero-config tool to make locally trusted development certificates with any names you'd like. - FiloSottile/mkcert
github.com

위 사이트에서 사진의 표시된 파일을 다운로드하여 실행한다.
HTTPS를 사용하려면 SSL인증서가 필요합니다.
그러나 Localhost는 도메인이 아니라 공인 인증서를 발급받을 수 없습니다.
mkcert를 이용하면 내 컴퓨터 자체를 신뢰할 수 있는 인증기관으로 등록해 주므로 HTTPS가 정상 작동하게 됩니다.
2.mkcert 설치 및 인증서 발급
다운로드한 mkcert-v1.x.x-windows-amd64.exe의 이름을 mkcert로 변경해 줍니다.
** 해당 파일을 바탕화면 OR 본인이 편한 곳에 위치시켜도 괜찮지만, 어디서든 mkcert의 명령어를 사용하려면
환경변수 PATH에 등록된 폴더에 넣어야 합니다.
System32는 Windows가 기본으로 PATH에 등록한 폴더라 이곳에 복사하면 PowerShell / CMD 어디서든 사용이 가능합니다.
Copy-Item "C:\Users\사용자명\Downloads\mkcert.exe" "C:\Windows\System32\mkcert.exe"
다운로드한 mkcert.exe를 System32에 위치시키고,
mkcert -install
mkcert localhost myIP
install을 실행하고 본인의 ip까지 추가를 한다면(선택사항)
Created a new certificate valid for the following names 📜
- "localhost"
- "myIP"
The certificate is at "./localhost+2.pem"
The key at "./localhost+2-key.pem" ✅
위와 같은 성공 메지와 두 개의 파일이 생성됩니다.
3. keystore 변환

그러나 지금 사용 중인 Tomcat7 버전은. pem파일을 직접 읽지 못합니다.
따라서 해당파일을. p12로 변환을 해야 합니다.
Windows운영체제에서 Git을 설치했다면, Git Bash를 이용해 openssl을 사용할 수 있습니다.
바탕화면에. pem파일을 위치시켰기 때문에 바탕화면으로 이동을 해주고,
cd /c/Users/사용자명/Desktop
openssl pkcs12 -export \
-in localhost.pem \
-inkey localhost-key.pem \
-out keystore.p12 \
-name tomcat \
-passout pass:changeit
변환 명령어를 입력해 줍니다.

해당파일을 톰캣 설치폴더의 conf디렉터리에 복사합니다.
4. Server.xml 수정
<!-- 기존 8080 Connector -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
<!-- 아래 추가 -->
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
keystoreFile="conf/keystore.p12"
keystorePass="changeit"
keystoreType="PKCS12"
clientAuth="false"
sslProtocol="TLS" />
이렇게 추가를 해주면 작업은 마무리입니다.
단, 변환명령어에서의 passout pass:changeit
추가한 server.xml의 keystorePass="changeit"
값이 같아야 작동을 합니다.
이후 서버를 재시작하고 브라우저에
https://localhost:8443/프로젝트경로 주소를 입력하고 접속을 해보면

설정이 잘 된 것을 확인할 수 있습니다.
감사합니다.
'Spring > Tip' 카테고리의 다른 글
| @Scheduled 스프링 스케쥴 (0) | 2024.07.30 |
|---|---|
| 방어적 프로그래밍 (0) | 2024.07.04 |
| [JavaScript] JSON 객체 console 출력 시 [object Object] 해결법 (0) | 2024.07.03 |
| Java - 서버 호스트 (Host) 정보 (2) (0) | 2024.06.21 |
| Java - 서버 호스트 (Host) 정보 (2) | 2024.06.19 |
- Total
- Today
- Yesterday
- MariaDB
- Postman
- springsecurity
- ubuntu
- Spring Security
- JAR매니패스트
- securityconfig
- GitHub
- spring ai
- 명령줄이 너무 깁니다
- session저장
- 특일정보
- Powershell
- InetAddress
- jwt
- null
- gradle
- 백엔드
- kotlin
- AI
- 의존성
- 서버호스트
- dbeaver
- Column count doesn't match value count at row 1
- Insert오류
- dependencies
- Git
- insert
- 게시판
- CRUD
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |