SSLCertificateFile           xxx-crt.pem
SSLCertificateKeyFile      xxx-key.pem
SSLCertificateChainFile   xxx-chain.pem
SSLCACertificateFile       xxx-chain-only.pem

pem 파일로 생성 후 아파치에 설정할 때

 

암호화 모듈을 pure Java모듈을 사용하다가 native를 사용하면 더 빠를 것이라는 의견이 있어 JNI with C++로 구현하였다.


테스트 중 native에서 자꾸만 "stack corruption detected: aborted" 에러가 발생하며 앱이 죽는 문제가 발생했다.


죽는 상황은 encryption/decryption시 원본 데이터의 크기가 native에서 선언 된 임시 버퍼인 unsigned char 배열의 크기보다 큰 경우에만 발생하였다.


어제/오늘 총 6시간 가까이 소스를 아무리 봐도... 로그를 아무리 확인해봐도... 문법적으로, 논리적으로 틀린곳이 없었다..


에러 내용으로 유추해보면 임시 버퍼를 잘 못 건들거나, 원본 데이터나 결과 데이터를 잘 못 조작하는 경우이고, 원본/결과 데이터를 건드는 곳은 전혀 문제가 없음을 확인했다.


임시 버퍼의 마지막 원소 다음 위치의 값을 확인한 결과 EVP_CipherUpdate실행 후 변경되는 것을 확인하였다. 하지만 EVP_CipherUpdate이 결과값을 리턴하는 것은 정확히 임시버퍼의 크기만큼여서 의심하지 않고 넘어갔었는데.. 결국 EVP_CipherUpdate에서 결과 값 외에도 뭔가 건드는 것이 있는 것으로 판단되어 임시버퍼의 크기를 암호화 알고리즘의 블럭 사이즈만큼 크게 잡아주니 정상 처리 된다.


=> update함수에 대한 설명을 좀 찾아보니 out length + BLOCK_SIZE - 1 만큼의 크기를 out buffer로 잡아주어야 된다고 되어 있다 ㅡㅡ;

Authority Key Identifier, 2.5.29.35

Subject Key Identifier, 2.5.29.14

Key Usage, 2.5.29.15

Certificate Policies, 2.5.29.32

Subject Alternative Name, 2.5.29.17

Extended Key Usage, 2.5.29.37

CRL Distribution Points, 2.5.29.31

Authority Information Access, 1.3.6.1.5.5.7.1.1

'develop > 보안' 카테고리의 다른 글

Let's encrypt로 무료 SSL 발급시 아파치 설정  (0) 2024.04.17
OpenSSL에서 EVP_CipherUpdate 유의점  (0) 2014.01.21

+ Recent posts