답변:
이 경우 openssl
설치 당신은 실행할 수 있습니다 :
openssl x509 -noout -subject -in server.pem
openssl x509 -noout -subject -in server.pem | sed -n '/^subject/s/^.*CN=//p'
sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-]*\).*$/\1/'
하고 CN 이후에 추가 세부 정보가 있었기 때문에 도메인을 얻는 데 사용 했습니다. 유효한 CN뿐만 작동 대부분의 경우에 그것의하지 슈퍼 엄격한 일치, 당신은 더 느슨하고 대체 할 수 [a-zA-Z0-9\.\-]
와 함께 [^/]
하지만 난 항상 작동 것이라고 확실하지입니다.
\*
와일드 카드 도메인을 지원하는 데 사용 @flungo 무엇을 : sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-\*]*\).*$/\1/'
( [^/]
하지만, 내 경우에는 작동)
sed
CERT는 예를 OU (조직 구성)에 대한 일반 이름 (CN) 다음에 지정된 상대 고유 이름 (RDN)을 가지고 또는 C (국가) 경우 위의 제안 명령이 작동하지 않습니다. 이러한 경우를 충족시키는 한 가지 방법은 다음과 sed
같습니다 openssl x509 -noout -subject -in server.pem | sed 's/^.*CN=//' | sed sed 's/\/.*$//'
.
openssl x509 -noout -subject -nameopt multiline | grep commonName
또는 값에 대해서만| sed -n 's/ *commonName *= //p'
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보다 약간 좋습니다.
gnutls-certtool
통해 설치된 것을 사용해야했습니다.brew install gnutls
gnutls-bin
위의 답변을 찾았고 매우 유용하다는 것을 알았지 만 certtool
명령 구문 (오늘 우분투 리눅스에서) 은 출력과 마찬가지로 goldilocks에서 설명한 것과 눈에 띄게 다릅니다. 그래서 저는 "오늘의 버전"으로 훌륭한 답변을 업데이트하는 것이 최선이라고 생각했습니다.
"i"
옵션 (지금은?) 에 따라 "수입"의 약자 man certtool
적절한 명령을 것으로 보인다, 그래서 "d"
, "디스플레이." 따라서이 명령은 다음과 같습니다.
certtool d myfoo.crt
(필자의 경우 파일 확장자 는 그렇지 .crt
않습니다 .pem
... 이것은 관련이 없습니다.)
... 관련 부분에서 다음과 같은 출력을 생성합니다.
Common Name : Foobar
의심의 여지없이 goldilocks가 옳았습니다. 이 경우 보다 certtool
출력이 작업하기 가 훨씬 쉽습니다 openssl
.
certtool
일반적인 연산자 ( -
또는 --
)를 옵션으로 사용 하는 버전을 보지 못 man certtool
했으며 v. 3.5.8 (데비안), 3.5.16 (페도라, 이후 업스트림 안정 브랜치에서 유일한 버전은 3.5.17입니다. 한 달 전), GnuTLS의 온라인 문서 및 실제로 Ubuntu 17.10 (현재 데비안과 동일한 버전) 의 온라인 매뉴얼 페이지는 모두 다음을 참조합니다.