SSL 인증서에서 공통 이름 (CN)을 얻습니까?


64

PEM 형식의 SSL CRT 파일이 있습니다. 명령 줄의 인증서에서 CN (일반 이름)을 추출 할 수있는 방법이 있습니까?


3
그러나 다중 도메인 인증서에서는 CN에 모든 인증서가 포함되어 있지는 않습니다.
Torsten Bronger

답변:


90

이 경우 openssl설치 당신은 실행할 수 있습니다 :

openssl x509 -noout -subject -in server.pem

5
당신은 피사체의 밖으로 CN을 추출 할 수 있습니다 :openssl x509 -noout -subject -in server.pem | sed -n '/^subject/s/^.*CN=//p'
마태 복음 Buckett에게

1
@MatthewBuckett이 말한 것을 수정 sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-]*\).*$/\1/'하고 CN 이후에 추가 세부 정보가 있었기 때문에 도메인을 얻는 데 사용 했습니다. 유효한 CN뿐만 작동 대부분의 경우에 그것의하지 슈퍼 엄격한 일치, 당신은 더 느슨하고 대체 할 수 [a-zA-Z0-9\.\-]와 함께 [^/]하지만 난 항상 작동 것이라고 확실하지입니다.
flungo 2016 년

1
추가 \*와일드 카드 도메인을 지원하는 데 사용 @flungo 무엇을 : sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-\*]*\).*$/\1/' ( [^/]하지만, 내 경우에는 작동)
브린

1
sedCERT는 예를 OU (조직 구성)에 대한 일반 이름 (CN) 다음에 지정된 상대 고유 이름 (RDN)을 가지고 또는 C (국가) 경우 위의 제안 명령이 작동하지 않습니다. 이러한 경우를 충족시키는 한 가지 방법은 다음과 sed같습니다 openssl x509 -noout -subject -in server.pem | sed 's/^.*CN=//' | sed sed 's/\/.*$//'.
하드 슈나이더

6
제목 이름에서 다른 RDN / ATV CN 을 분리하는 더 쉬운 방법 : openssl x509 -noout -subject -nameopt multiline | grep commonName또는 값에 대해서만| sed -n 's/ *commonName *= //p'
dave_thompson_085

7
certtool -i < whatever.pem | egrep "^\s+Subject:"

<인수로 사용하지 않고를 통해 파일을 표준 입력 으로 지정합니다. Sans egrep는 전체 인증서를 인쇄하지만 CN은 Subject:상단 근처의 필드에 있습니다 (필드에 CN 값도 있음 Issuer:).

X.509 Certificate Information:
    Version: 3
    Serial Number (hex): 01
    Issuer: [...] CN=unixandlinux.ex  <- Not this one.
    Validity: ...
    Subject: CN=goldilocks

certtool설치되지 않은 경우 검색 만하면됩니다. GnuTLS는 OpenSSL, IMO보다 약간 좋습니다.


2
좋은 대답, +1 Mac OS X의 경우, 다음을 gnutls-certtool통해 설치된 것을 사용해야했습니다.brew install gnutls
Mike D

데비안 설치gnutls-bin
rubo77

1

위의 답변을 찾았고 매우 유용하다는 것을 알았지 만 certtool명령 구문 (오늘 우분투 리눅스에서) 은 출력과 마찬가지로 goldilocks에서 설명한 것과 눈에 띄게 다릅니다. 그래서 저는 "오늘의 버전"으로 훌륭한 답변을 업데이트하는 것이 최선이라고 생각했습니다.

"i"옵션 (지금은?) 에 따라 "수입"의 약자 man certtool적절한 명령을 것으로 보인다, 그래서 "d", "디스플레이." 따라서이 명령은 다음과 같습니다.

certtool d myfoo.crt

(필자의 경우 파일 확장자 는 그렇지 .crt않습니다 .pem... 이것은 관련이 없습니다.)

... 관련 부분에서 다음과 같은 출력을 생성합니다.

Common Name     : Foobar

의심의 여지없이 goldilocks가 옳았습니다. 이 경우 보다 certtool출력이 작업하기 가 훨씬 쉽습니다 openssl.


1
우리가 완전히 다른 소프트웨어에 대해 이야기하고있는 것 같습니다. 나는 certtool일반적인 연산자 ( -또는 --)를 옵션으로 사용 하는 버전을 보지 못 man certtool했으며 v. 3.5.8 (데비안), 3.5.16 (페도라, 이후 업스트림 안정 브랜치에서 유일한 버전은 3.5.17입니다. 한 달 전), GnuTLS의 온라인 문서 및 실제로 Ubuntu 17.10 (현재 데비안과 동일한 버전) 의 온라인 매뉴얼 페이지는 모두 다음을 참조합니다.
goldilocks

"-i, --certificate-정보는, 지정된 증명서에 대한 정보를 인쇄" 반면에 "-d" 이다 "--debug". 아주 이상한. O_o?
goldilocks

-1

나는 사용했다 : openssl x509 -noout -subject -in mycert.crt | awk -F= '{print $NF}'추가 | sed -e 's/^[ \t]*//'공백으로 살 수 없다면

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.