직장에서 많은 내부 서버에는 openssl
간단한 스크립트를 통해 직접 생성한 SSL 인증서가 있습니다. 생성은 제대로 작동했지만 후속 처리에는 개선이 필요했기 때문에 서버 SSL 인증서의 암호화되지 않은 복사본을 모두 잃어버렸습니다. 결과적으로 새 인증서를 만들고 배포하는 데 시간이 좀 걸리게 되지만 이로 인해 문제가 발생합니다.
새 SSL 인증서를 생성하려고 하면 internal.server.company
프로세스가 끝날 때 openssl이 실패합니다.
failed to update database
TXT_DB error number 2
이 호스트에 대한 인증서가 이미 데이터베이스에 존재하기 때문입니다.
이전 인증서가 만료된 경우 데이터베이스에서 제거될 것이라고 생각 openssl ca -updatedb
하지만 그렇지 않습니다.
편집기에서 (관련) 항목을 열고 발견된 줄을 index.txt
검색 internal.server.company
하고 삭제하여 이 문제를 해결할 수 있지만 이는 해킹처럼 보입니다. 이미 인증서가 있다고 생각되는 이름에 대한 새 인증서를 생성하려는 것을 openssl에서 수락하도록 하는 좋은 방법이 있습니까?
답변1
데이터베이스와 index.txt
동일한 폴더에 파일(file )을 만들고 index.txt.attr
다음 콘텐츠를 추가합니다.
unique_subject = no
데이터베이스 파일이 어디에 있는지 확실하지 않으면 openssl.cnf
다음과 같이 사용 중인 파일을 확인하십시오.
[ CA_default ]
dir = ./demoCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt
위의 예에서 데이터베이스는 에 있고 index.txt
에 상주합니다 . 따라서 새 파일을 에 ./demoCA
넣어야 합니다 .index.txt.attr
./demoCA
데이터베이스 파일 이름이 그대로인 경우 index
새 파일의 이름을 지정해야 합니다 index.attr
.