PEM 형식의 SSL 인증서에서 일련 번호를 추출하는 가장 좋은 방법이 무엇인지 알고 싶습니다.
그런 다음 인증서 형식을 다음과 같이 지정하고 싶습니다 hexhex:hexhex:...:hexhex
. 예를 들어 SSL 인증서의 16진수 일련 번호가 다음과 같은 경우입니다.
0123456709AB
출력은 다음과 같아야합니다.
01:23:45:67:09:AB
선호하는 대로 openssl과 x509 옵션을 사용하여 한 줄의 UNIX 명령을 사용하여 이 작업을 수행하고 싶습니다.
답변1
노력하다:
openssl x509 -noout -serial -in cert.pem | cut -d'=' -f2 | sed 's/../&:/g;s/:$//'
openssl x509 -noout -serial -in cert.pem
인증서의 일련번호가 출력되지만 형식은 serial=0123456709AB
.
따라서 파이프를 통해 cut -d'=' -f2
출력을 등호로 분할하고 두 번째 부분인 출력을 출력합니다 0123456709AB
.
즉, sed
명령 sed
의 첫 번째 부분은 s/../&:/g
문자열을 두 문자( ..
)마다 분할하고 콜론( :
)을 삽입합니다. 그 결과는 다음과 같습니다 01:23:45:67:89:AB:
(끝 부분의 콜론에 주의).
명령의 두 번째 부분 sed
( s/:$//
)은 출력 끝에서 콜론을 검색하고 이를 빈 문자열로 대체하여 원하는 출력을 제공합니다.
또는 openssl
독특한 sed
답변:
openssl x509 -noout -serial -in test2.crt | sed 's/.*=//g;s/../&:/g;s/:$//'
s/.*=//g
명령 시작 부분에 추가된 항목 이 첫 번째 버전의 sed
항목을 대체합니다 .cut
답변2
openssl x509 -noout -text -in [cert]
인증서에 대한 추가 정보를 제공합니다. 일련 번호만 원하는 경우 해당 일련 번호를 얻기 위해 grep을 사용할 수 있습니다.
... | grep -A1 "Serial Number"
그러면 다음과 같은 빌드 출력이 생성됩니다.
Serial Number:
07:bf:0e:14:95:e7:1e:34:a2:b1:8b:df:ca:dd:ab:af:af:fb:50:fb
Serial Number:
텍스트를 제거하려면tail -1
완전한 명령은 다음과 같습니다:
openssl x509 -noout -text -in [cert] | grep -A1 "Serial Number" | tail -1