%EC%97%90%EC%84%9C%20%ED%83%80%EC%9E%84%EC%8A%A4%ED%83%AC%ED%94%84%20%EC%B6%94%EC%B6%9C.png)
p7s 파일에서 타임스탬프 정보(파일이 서명된 경우)를 추출하는 방법을 찾고 있습니다.
현재 asn1parse를 통해 타임스탬프를 추출하고 문자열(id-smime-aa-timeStampToken)을 사용하고 있습니다.
구문 분석된 파일의 내용은 다음과 같습니다.
19120:d=7 hl=2 l= 11 prim: OBJECT :id-smime-aa-timeStampToken
19133:d=7 hl=4 l=2165 cons: SET
19137:d=8 hl=4 l=2161 cons: SEQUENCE
길이가 2165인 오프셋 19137에서 데이터를 추출하고 있습니다(오프셋 hl=4 l=2161과 같은 줄에 존재한다고 가정함). 그것이 정확한지는 확실하지 않지만 정확한 시간 정보를 얻고 있습니다.
그런데 p7s에서 직접 타임스탬프를 추출할 수 있는 방법이 있나요?
답변1
OpenSSL cms
명령을 사용하여 서명된 PKCS#7 파일의 내용을 볼 수 있습니다. 서명자의 인증서가 없어서 서명을 확인하지 않고 구조만 보고 있다고 가정하면 다음을 사용할 수 있습니다.
openssl cms -verify -noverify -cmsout -print -inform DER -in file.p7s
그러면 다음 추출 내용을 포함하는 구조의 세부 정보가 덤프됩니다.
signedAttrs:
object: contentType (1.2.840.113549.1.9.3)
set:
OBJECT:pkcs7-data (1.2.840.113549.1.7.1)
object: signingTime (1.2.840.113549.1.9.5)
set:
GENERALIZEDTIME:Aug 3 23:50:00 2020 GMT
필수 필드 awk
를 사용하여 필터링할 수 있습니다 .grep
signingTime
OpenSSL의 텍스트 출력 필터링이 적합하지 않은 경우 ASN.1 구조의 내용을 검사하는 데 더 적합한 다른 도구가 있습니다. 예를 들어 Python에 능숙하다면 다음을 사용할 수 있습니다.pyasn1crypto.