아무도 프로필을 건드리지 않았는데 같은 클라이언트가 이제 시작할 때마다 개인 키 암호 구문을 요구합니다. 이 변화가 배포판 업그레이드 후 며칠 안에 나타났다면 업그레이드가 유력한 원인이며, OpenSSL 3가 알고리즘 지원을 재편한 탓에 예전 라이브러리가 문제없이 읽던 키가 한 바이트도 바뀌지 않은 채 읽히지 않게 될 수 있습니다. 프롬프트만 보면 그중 두 가지가 똑같아 보이므로 점검은 순서대로 하세요.

첫 번째 질문은 키가 암호화되어 있는지이고, 두 번째는 이 빌드가 그것을 복호화할 수 있는지입니다. 설정을 바꾸는 일은 두 답을 모두 안 뒤에야 의미가 있습니다.

키가 암호화되어 있는지 확인하세요

파일 이름만으로는 아무것도 증명되지 않으므로, 파일의 첫 줄을 읽은 다음 라이브러리가 그것을 파싱하게 하세요. 라벨이 ENCRYPTED PRIVATE KEY 인 PEM 블록은 암호화된 PKCS#8이고, 더 오래된 RSA PRIVATE KEY 블록으로 Proc-Type: 4,ENCRYPTED 을 포함하는 것은 전통적인 형식이며, 둘 다 암호 구문을 기대합니다. 암호화되지 않은 PRIVATE KEY 블록은 암호 구문을 전혀 요구해서는 안 됩니다. 권한 문제는 다른, 훨씬 덜 흥미로운 오류를 내므로 파일을 소유한 계정으로 파싱을 실행하세요.

키가 정말 암호화되지 않았는데도 클라이언트가 계속 묻는다면, 암호학 쪽은 그만 보고 프로필이 서비스가 아직 읽을 수 있는 askpass 파일을 지정하는지 확인하세요.

이 빌드가 그것을 복호화할 수 있는지 확인하세요

OpenSSL 3는 알고리즘 지원을 공급자로 나누었고, 오래된 암호 모음은 이제 기본 공급자가 아니라 legacy 공급자에 있습니다. 그런 암호로 암호화된 키는 여전히 유효하지만, legacy 공급자 없이 로드된 라이브러리는 그것을 복호화할 수 없습니다. 일부 클라이언트에서는 반복되는 프롬프트로, 다른 클라이언트에서는 암호 구문 직후의 확실한 실패로 나타납니다.

같은 키를, 먼저 기본 공급자만으로, 그다음에는 명령줄에서 legacy와 기본을 모두 요청해서 같은 바이너리로 두 번 파싱하세요. 두 번째 시도가 첫 번째가 실패한 곳에서 성공하면, 진단은 업그레이드 시점이 아니라 증거에 근거합니다. 둘 다 똑같이 실패하면 암호 구문이 틀렸거나 파일이 손상된 것이며, 어떤 공급자 설정으로도 둘 다 고칠 수 없습니다.

가장 좁은 범위의 해결책을 확인하세요

시스템 전체 변경보다 클라이언트에 한정된 변경을 선호하세요. 일부 2.6 빌드는 해당 데몬 프로세스에 두 공급자를 모두 로드하는 프로필 옵션을 받아들이므로, 그것에 의존하기 전에 정확한 버전의 설명서에서 지시문을 확인하세요. 대신 시스템 openssl.cnf 을 편집하면 호스트의 모든 OpenSSL 프로그램에 영향을 주지만, 더 좁은 설정은 키를 다시 인코딩한 뒤 되돌리기도 훨씬 쉽습니다.

프롬프트를 없애려고 암호 구문을 삭제하지 마세요. 그것은 보호된 자격 증명을 평문 파일로 바꾸고, 그것이 들어가는 모든 백업, 사본, 지원 번들의 위험을 조용히 바꿉니다. 중요한 구분은 암호 구문이 필요한 키와 이 라이브러리가 복호화할 수 없는 키 사이입니다.

서비스 컨텍스트를 확인한 다음 다시 인코딩하세요

키를 열 수 있게 되면, 현재 알고리즘으로 다시 암호화하세요 그래서 의존성이 사라지게 하세요. 새 파일은 현대적인 암호로 쓰고, 파싱되는지 확인하고, 프로필을 갱신하고, 예전 사본은 연결이 성공할 때까지만 보관하세요. 암호 구문은 로컬 사용자 누구나 프로세스 목록에서 읽을 수 있으므로 명령줄에 두지 마세요. 예전 파일은 당신의 셸이 아니라 새 파일이 서비스 계정에서 연결된 뒤에만 지우세요.

그다음 실제로 클라이언트를 실행하는 유닛을 확인하세요. 당신의 셸에서 읽히는 키가 다른 계정이나 강화된 홈 디렉터리 설정으로 실행되는 서비스에는 읽히지 않을 수 있습니다.

공급자 설정을 프로필 옆에 기록하고 두 명령 테스트도 함께 보관하세요. 나중 업그레이드가 legacy 공급자를 제거하면 그 테스트를 다시 실행해, 키에 아직 그것이 필요한지 아니면 이 우회 방법에서 프로필을 빼낼 수 있는지 확인하세요.

프롬프트는 적어도 세 가지 원인이 있는 증상이며, 그중 하나만 빠진 암호 구문입니다.

관련 글