[openssl] 명령 줄에서 암호를 사용하여 openSSL 키를 생성하는 방법은 무엇입니까?

첫째-암호를 제공하지 않으면 어떻게됩니까? 일종의 의사 임의 문구가 사용됩니까? 난 그냥 평범한 해커들을 막을 수있는 “충분한”무언가를 찾고있다.

둘째-명령 줄에서 암호를 제공하여 명령 줄에서 키 쌍을 어떻게 생성합니까?


나는 마침내이 명령을 사용하여 작동하게되었고, 일반적으로 사용하기에 안전하지 않은 것으로 간주되는 exec ()를 사용하여 파일에 PassPhrase를 제공하는 것이 좋습니다. PHP가 내 PC에서만 실행될 것이라고 확신하므로이 위험을 감수 할 수 있습니다 (Windows를 실행하고 PS 명령이 없음).

openssl genrsa -aes128 -passout pass:foobar -out privkey.pem 2048
openssl rsa -in privkey.pem -passin pass:foobar -pubout -out privkey.pub

@caf 덕분에 많은 사람이 없었다면 이것이 불가능했을 것입니다.

단 한 가지 후회합니다. 아무리 Google을 사용해도 아무도 openssl_pkey_new()Windows에서 Xampp로 작업 할 수없는 것 같습니다 ( 키 쌍을 생성하는 적절한 방법).



답변

암호를 사용하지 않으면 개인 키가 대칭 암호로 암호화되지 않고 완전히 보호되지 않은 상태로 출력됩니다.

다음과 같은 호출을 사용하여 명령 줄에 암호를 제공하여 키 쌍을 생성 할 수 있습니다 (이 경우 암호는 foobar).

openssl genrsa -aes128 -passout pass:foobar 3072

그러나 명령 줄 인수는 일반적으로 모든 프로세스에서 볼 수 있기 때문에 당시 컴퓨터에서 실행중인 다른 프로세스에서이 암호를 가져올 수 있습니다.

더 나은 대안은 파일 권한으로 보호되는 임시 파일에 암호를 쓰고 다음을 지정하는 것입니다.

openssl genrsa -aes128 -passout file:passphrase.txt 3072

또는 표준 입력에 암호를 제공하십시오.

openssl genrsa -aes128 -passout stdin 3072

file:옵션 또는 파일 설명자 와 함께 명명 된 파이프를 사용할 수도 있습니다 .


그런 다음 일치하는 공개 키를 얻으려면 을 사용하여 개인 키를 암호화하는 데 사용 된 openssl rsa것과 동일한 암호를 -passin매개 변수 와 함께 제공 해야합니다 .

openssl rsa -passin file:passphrase.txt -pubout

(이는 표준 입력에서 암호화 된 개인 키를 예상합니다. 대신를 사용하여 파일에서 읽을 수 있습니다 -in <file>.)


암호로 암호화 된 개인 키 쌍을 사용하여 파일에 3072 비트 개인 및 공개 키 쌍을 생성하는 예 foobar:

openssl genrsa -aes128 -passout pass:foobar -out privkey.pem 3072
openssl rsa -in privkey.pem -passin pass:foobar -pubout -out privkey.pub


답변

genrsa되었습니다 에 의해 대체genpkey 가 암호를 묻는 메시지가 표시됩니다 터미널에서 수동으로 실행할 때 및 :

openssl genpkey -aes-256-cbc -algorithm RSA -out /etc/ssl/private/key.pem -pkeyopt rsa_keygen_bits:4096

그러나 스크립트에서 실행할 때 명령은 암호를 요구하지 않으므로 암호가 프로세스로 표시되지 않도록하려면 shell스크립트 의 함수를 사용하십시오 .

get_passwd() {
    local passwd=
    echo -ne "Enter passwd for private key: ? "; read -s passwd
    openssl genpkey -aes-256-cbc -pass pass:$passwd -algorithm RSA -out $PRIV_KEY -pkeyopt rsa_keygen_bits:$PRIV_KEYSIZE
}


답변