[java] Tomcat에서의 기본 인증과 SSL 인증서 사용 방법

Tomcat은 웹 애플리케이션 서버로서 HTTP 요청을 처리하는 기능을 제공합니다. 이러한 요청은 보안이 중요한 경우에는 인증과 암호화가 필요합니다. 이 글에서는 Tomcat에서 기본 인증과 SSL 인증서 사용 방법에 대해 알아보겠습니다.

1. Tomcat의 기본 인증 설정

Tomcat에서 기본 인증을 사용하려면 web.xml 파일을 수정해야 합니다. 이 파일은 보통 WEB-INF 폴더에 위치합니다. 다음과 같이 수정해주세요.

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Protected Resources</web-resource-name>
        <url-pattern>*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>ROLE_USER</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Basic Authentication</realm-name>
</login-config>

위 설정은 모든 URL에 대해 기본 인증을 요구하는 것을 의미합니다. 사용자의 인증 정보는 Tomcat의 사용자 데이터베이스나 외부 LDAP 서버와 연동하여 확인할 수 있습니다.

2. SSL 인증서 사용 방법

SSL 인증서를 사용하여 통신을 암호화하려면 다음과 같은 단계를 따라야 합니다.

2.1. SSL 인증서 생성

SSL 인증서를 생성하기 위해 다음 명령어를 사용할 수 있습니다.

keytool -genkey -alias mycert -keyalg RSA -keystore mykeystore.jks

위 명령어를 실행하면 mykeystore.jks 파일이 생성됩니다. 이 파일은 SSL 인증서와 해당 개인 키를 저장하는데 사용됩니다.

2.2. Tomcat 설정 수정

Tomcat이 SSL 인증서를 사용하도록 하려면 server.xml 파일을 수정해야 합니다. 해당 파일은 Tomcat 설치 경로의 conf 폴더에 위치합니다. 다음과 같이 수정해주세요.

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           keystoreFile="mykeystore.jks" keystorePass="password"
           clientAuth="false" sslProtocol="TLS" />

위 설정은 포트 8443에서 SSL로 통신하도록 설정하는 것을 의미합니다. keystoreFile은 앞에서 생성한 인증서 파일(mykeystore.jks)의 경로를 나타내며, keystorePass는 인증서를 암호화하는데 필요한 비밀번호입니다.

3. 결과 확인

위의 설정을 적용한 후 Tomcat을 재시작하고, 웹 브라우저에서 https://localhost:8443에 접속해 보세요. 이제 기본 인증을 통해 인증 정보를 입력해야만 접속할 수 있게 될 것입니다.

이처럼 Tomcat에서의 기본 인증과 SSL 인증서 사용 방법에 대해 알아보았습니다. 보안이 중요한 웹 애플리케이션을 개발할 때는 이러한 설정을 고려해야 합니다.


참고자료: