- @참고 : https://pliss.tistory.com/95

- 옵션 -R : 하위 디렉토리와 파일의 권한까지 변경

chmod -R 755 bin/

 

 

 

 

 

블로그 이미지

uchacha

개발자 일지

,

- @참고 : https://stackoverflow.com/questions/45753212/convert-der-certificate-to-p12

- @참고2 : http://conanoc.egloos.com/6656558

- @참고3 : https://stackoverflow.com/questions/22327160/enter-export-password-to-generate-a-p12-certificate/22328260#22328260

공인인증서 signCert.der 과 signPri.key로 .p12 만들기

openssl x509 -inform der -in signCert.der -out signCert.pem
openssl pkcs8 -inform der -in signPri.key -out signPri.pem -passin pass:[myPassword]
openssl pkcs12 -export -inkey signPri.pem -in signCert.pem -out testCert.p12 -password pass:[myPassword]

 

블로그 이미지

uchacha

개발자 일지

,

- @참고 : http://blog.naver.com/PostView.nhn?blogId=ucert&logNo=221385383089

- @참고2 : https://blog.naver.com/ucert/221384177875

PKCS7

PKCS7은 IETF로 전환되기 전 RSA에 의해 정의된 것으로 암호화되고 서명된 데이터를 배포하기 위한 다목적 형식을 가지고 있다.
윈도우에서 지원하는 개방형 표준인 PKCS7. 여기서 기억해야 할 점은 개인키를 포함할 수 없다는 것이다.

PKCS8

PKCS8은 PKCS7과는 달리 개인키(private key)를 휴대할 때 사용되는 유사표준이다.

PKCS12

암호화를 통해, 더 나은 보안을 제공하는 PKCS12는 PEM파일과 마찬가지로 단일 인증서에서 전체 인증서 체인 및 키쌍까지 포함할 수 있다. 그렇지만 PEM과 달리 완전히 암호화된 암호로 보호된 컨테이너(container)이다. 그래서 SSL인증서 생성 중에 비번 입력창이 나타날 때 PKCS12형식으로 인증서를 열 수 있게 되는 것이다.

 

X.509인증서

PKI표준을 사용한 서버가 연결된 공개키의 적절한 소유자인지를 확인하는 디지털 인증서의 한 유형
블로그 이미지

uchacha

개발자 일지

,

- @참고 : https://cornswrold.tistory.com/232

에러 내역

to prepare test instance [INSTANCE_ADDRESS] java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig at org.springframework.test.context.web.AbstractGenericWebContextLoader.configureWebResources(AbstractGenericWebContextLoader.java:188) at org.springframework.test.context.web.AbstractGenericWebContextLoader.loadContext(AbstractGenericWebContextLoader.java:124) at org.springframework.test.context.web.AbstractGenericWebContextLoader.loadContext(AbstractGenericWebContextLoader.java:61) at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:281) at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:249) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:189) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:131) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209) Caused by: java.lang.ClassNotFoundException: javax.servlet.SessionCookieConfig at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ... 32 common frames omitted

 

원인 및 해결 방안

Spring 4.0 이상 버전을 사용할 때 spring-test 를 이용하여 Test를 진행하면 생기는 에러이다.

해당 에러는 Servlet 버전을 3.0.1 이상으로 맞춰주면 해결된다.

 

Java 버전 체크 정보

spring framework - @참고 : https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions

apache tomcat - @참고 : http://tomcat.apache.org/whichversion.html

블로그 이미지

uchacha

개발자 일지

,

- @참고 : https://lng1982.tistory.com/199

java version을 1.6에서 1.8로 업데이트 하여 project facet을 바꿔놓은 프로젝트를 다시 원복하려는데 위의 제목과 같은 에러가 나서 원복할 수가 없었다.

해당 에러의 체크 포인트는

1. workspace의 .settings디렉토리의 org.eclipse.wst.common.project.facet.core.xml파일

2. web.xml의 XML 스키마 설정

부분인 듯 하다.

나의 경우는 1번을 수정해주자 project facet 설정이 가능했다.

블로그 이미지

uchacha

개발자 일지

,

- @참고 : https://stackoverflow.com/questions/10758555/java-lang-nosuchmethoderror-javax-servlet-http-httpservletrequest-startasync

- @참고2 : https://www.jetbrains.com/help/idea/work-with-maven-dependencies.html

 

에러 내역

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getAsyncContext()Ljavax/servlet/AsyncContext; at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:73) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:160) at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:127) at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:151) at com.wizvera.pinsign.admin.web.controller.LoginControllerTest.loginTest(LoginControllerTest.java:70) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)

 

해결방법

servlet version이 3.0 이상이어야 javax.servlet.http.HttpServletRequest.getAsyncContext() 해당 메소드가 존재하는데 servlet 버전이 낮아 해당 메소드가 존재하지 않아서 나는 에러이다. 내 경우에는 pom.xml에서 servlet version을 3.1로 맞추었지만 cors-filter에서 transitively하게 v2.5를 가져와서 해당 에러가 났다. 따라서 전이적으로 낮은 servlet 버전을 가져온 cors-filter의 버전을 1.3.2에서 2.5로 올려줬더니 getAsyncContext()를 찾는다.

또는

exclusion을 통해 버전을 잘못가져온 해당 라이브러리를 제외해주니 해결된다.

<dependency>
  <groupId>com.thetransactioncompany</groupId>
  <artifactId>cors-filter</artifactId>
  <version>1.3.2</version>
  <exclusions>
    <exclusion>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
    </exclusion>
  </exclusions>
</dependency>
블로그 이미지

uchacha

개발자 일지

,
블로그 이미지

uchacha

개발자 일지

,

- @참고 : https://sup2is.tistory.com/70

- @참고2 : https://gdtbgl93.tistory.com/164

에러 내역

No qualifying bean of type [javax.servlet.ServletContext] found for dependency

원인

junit이 돌아갈때는 javax.servlet 패키지에 대한 의존관계를 아무도 해결해주지 않기때문에 스프링 컨테이너가 올라가는 시점에 에러가 난다.

해결법

@WebAppConfiguration 어노테이션 사용

 

spring doc
The presence of 
@WebAppConfiguration on a test class indicates that a WebApplicationContext should be loaded for the test using a default for the path to the root of the web application. 

테스트 클래스에 @WebAppConfiguration이 있으면 웹 응용 프로그램의 루트에 대한 경로에 대한 기본값을 사용하여 테스트를 위해 WebApplicationContext를로드해야 함을 나타냅니다. 

 

에러 내역

java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig

원인

서블릿 버전 3.1 이하에서는 SessionCookieConfig 클래스를 찾지 못하는 오류가 발생한다.

해결법

서블릿 jar 파일을 3.1 버전으로 업데이트

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

 

블로그 이미지

uchacha

개발자 일지

,