공인된 인증서를 가지고 있으면 openssl을 통하여 PKCS #12 형식으로 변환하여 톰캣에 적용시킬 수 있음. 

자체적으로 인증서를 생성할경우에는 복잡함. 


ssl.key : 개인키 

ssl.crt : 인증서 

InstantSSL.ca-bundle : 중개자인증서 


0. PKCS #12 형식으로 변환(톰캣에서 인식할수 있게 변환하는 것임) 

openssl pkcs12 -export -in ssl.crt -inkey ssl.key -certfile InstantSSL.ca-bundle -out ssl.p12 -name tomcat 


1. tomcat 5.5 경우 (server.xml) 

<Connector port="8443" 

              maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 

              enableLookups="false" disableUploadTimeout="true" 

              acceptCount="100" debug="0" scheme="https" secure="true" 

              keystoreFile="/경로/client.p12" keystorePass="패스워드" 

              keystoreType="pkcs12" 

              clientAuth="false" sslProtocol="TLS" URIEncoding="KSC5601" /> 


2. tomcat 6 경우 (server.xml) 

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" /> 

<Connector protocol="org.apache.coyote.http11.Http11Protocol" 

                  port="8443" minSpareThreads="5" maxSpareThreads="75" 

                  enableLookups="true" disableUploadTimeout="true" 

                  acceptCount="100" maxThreads="200" 

                  scheme="https" secure="true" SSLEnabled="true" 

                  keystoreFile="/경로/client2.p12" keystorePass="패스워드" 

                  keystoreType="pkcs12" 

                  clientAuth="false" sslProtocol="TLS" URIEncoding="KSC5601"/> 



=================================================================================================== 


[자체적으로 인증서 생성시 SSL 적용방법] 


touch index.txt 

echo "0001" > serial 

echo "0001" > crlnumber 

vi /etc/pki/tls/openssl.cnf 

dir            = .            # Where everything is kept  <-----요부분 . 으로 수정하면 됨. 

certs          = $dir/certs            # Where the issued certs are kept 

crl_dir        = $dir/crl              # Where the issued crl are kept 

database        = $dir/index.txt        # database index file. 


1. CA 및 서버 인증서 생성 


- 자체인증기관 생성 

openssl genrsa -des3 -out ./private/cakey.pem 2048 


openssl req -new -x509 -days 3650 -key ./private/cakey.pem -out ./cacert.pem 


- key 생성 

openssl genrsa -des3 -out certificate-key.pem 1024 


- 인증기관(자체) 보낼 요청 생성 

openssl req -new -days 3650 -key certificate-key.pem -out certificate-req.pem 


- 인증기관(자체) 인증 

openssl ca -in certificate-req.pem -out certificate.pem -notext 


- 톰켓용 변환 

openssl pkcs12 -export -in certificate.pem -inkey certificate-key.pem -certfile ./cacert.pem -out client.p12 -name tomcat 


2. server.xml 설정 

 - Tomcat 5.5 경우      

 <Service name="Catalina"> 

    <Connector port="8443" 

              maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 

              enableLookups="false" disableUploadTimeout="true" 

              acceptCount="100" debug="0" scheme="https" secure="true" 

              keystoreFile="/root/demoCA/client.p12" keystorePass="*******" 

              keystoreType="pkcs12" 

              clientAuth="false" sslProtocol="TLS" URIEncoding="KSC5601" /> 

        <Engine name="Catalina" defaultHost="localhost" debug="0"> 

          <Realm className="org.apache.catalina.realm.UserDatabaseRealm" debug="0" 

                      resourceName="UserDatabase"/> 

          <Host name="localhost" appBase="webapps"> 

              <Context path="/contextName" docBase="/home/altimis/tomcat/webapps/test" 

                                                  reloadable="true"/> 

      </Host> 

    </Engine> 

  </Service> 

  

  

- Tomcat 6 경우      

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" /> 

  

<Connector protocol="org.apache.coyote.http11.Http11Protocol" 

                  port="8443" minSpareThreads="5" maxSpareThreads="75" 

                  enableLookups="true" disableUploadTimeout="true" 

                  acceptCount="100" maxThreads="200" 

                  scheme="https" secure="true" SSLEnabled="true" 

                  keystoreFile="/root/demoCA/client.p12" keystorePass="******" 

                  keystoreType="pkcs12" 

                  clientAuth="false" sslProtocol="TLS" URIEncoding="KSC5601"/>

'job > was' 카테고리의 다른 글

tomcat ssl 인증서 설치  (0) 2018.08.31
java 메모리 분석  (0) 2018.08.31

톰캣(java) 아웃오브메모리(java.lang.OutOfMemoryError: GC overhead limit exceeded)


해결 방법




대충 처리하자면 현재 사용중인 메모리중 여유 메모리 어느정도인지 확인해서 더 추가해주기


ㄴ그전에 프로그램상의 메모리 누수는 없는지 확인해야함, 이거는 개발단








 ps -ef | grep java 해서 Xmx 설정이 없으면 자바에 디폴트로 설정된 값으로 할당된 상태이니 아래 명령어를 통해 확인 가능


##아래는 java의 디폴트 사이즈 확인하는명령어 보통 heap사이즈는 실제 물리 메모리의 4분의1 이 할당되는듯


[root@localhost]# java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'


     intx CompilerThreadStackSize                   = 0                                   {pd product}


    uintx ErgoHeapSizeLimit                         = 0                                   {product}


    uintx HeapSizePerGCThread                       = 87241520                            {product}


    uintx InitialHeapSize                          := 257949696                           {product}


    uintx LargePageHeapSizeThreshold                = 134217728                           {product}


    uintx MaxHeapSize                              := 4116709376                          {product}


     intx ThreadStackSize                           = 1024                                {pd product}


     intx VMThreadStackSize                         = 1024                                {pd product}


####




####현재 java 메모리 어느 영역 사용중인지 찍는 로그


java -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+DisableExplicitGC -Xloggc:/root/test.txt


ㄴ값이 항상 일정한것이.... 뭔가 찾아보면 있을꺼같은데 잘 모르겄다..이건 어디에 쓰이는지 더 확인해봐야함


####




카타리나.sh 에 추가 JAVA_OPTS="$JAVA_OPTS -Xms8192M -Xmx8192M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/root/tomcat_oom_dump.txt"




근데 메모리 늘려줘도 oom 발생하면 덤프파일을 통해 분석을 해보자


카타리나.sh에 추가한 JAVA_OPTS 중 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/root/tomcat_oom_dump.txt" 이부분이 oom 에러 발생할경우 덤프파일 생성하는거






덤프파일 pc로 옮기고 아래에서 분석툴 다운받기


http://www.eclipse.org/downloads/download.php?file=/mat/1.7/rcp/MemoryAnalyzer-1.7.0.20170613-win32.win32.x86_64.zip&mirror_id=1255






오픈 heap 파일 할때 java heap space 에러나면 덤프파일 분석시 사용되는 메모리가 부족해서 발생하는거다.


압축 푼 파일보면 memory analyzer.ini 파일 있는데 거기서 Xmx 값을 2048 혹은 4096으로 늘려준다.


8기가짜리 하는데 8000 주니까 된다. 그럼 pc 메모리가 부족하면 애초에 돌리질 못하냐 ? 아니다. 뭐 하는방법이 있다. 구글링해보면.

'job > was' 카테고리의 다른 글

tomcat ssl 인증서 설치  (0) 2018.08.31
java 메모리 분석  (0) 2018.08.31

+ Recent posts