SSH 및 SSL에 동일한 키를 사용하는 방법 (https)


12

소규모 팀을위한 개발 도구를 설치하려고하는데 인증을받을 수 없습니다.

우리는 분산 된 팀이므로 서버는 인터넷에 있습니다. 그리고 SSO + 제로 클라이언트 구성을 원합니다.

따라서 git 클라이언트는 기본 인증 만 사용할 수 있지만 비밀번호는 저장하지 않으며 일부 IDE 플러그인은 UI에서 비밀번호 질문을 전달하지 않기 때문에 기본적으로 https + webdav를 통한 git은 실용적이지 않습니다.

git over ssh를 사용해야합니다. 나는 gitosis를 설치했으며 기본적으로 비대칭 키로 작동합니다. 각 개발자에게 키를 설치하도록 요청해야합니다. 구성을 잊어 버릴 수 있습니다.

그런 다음 개발자가 https에있는 웹 도구 (wiki, 티켓 등)에 액세스하기를 원하지만 이번에는 형식이 SSH 사이에서 호환되지 않기 때문에 로그인 / 암호 또는 다른 개인 키를 제공해야합니다 SSL과 OS에 저장하는 장소가 동일하지 않습니다. 이제 SSO를 잊어야합니까?

내가 착각 했니?

답변:


11

TL; DR 요약 : SSL / X.509 인증서 + 키가있는 경우 개인 키 파일을로 지정하십시오 ssh. 또는 에 SSH 키가 이미있는 경우 id_rsaCSR에 서명 할 때 OpenSSL과 함께 사용하십시오. 그게 다야.


사용자의 SSL 인증서가 joeuser.pem있고 개인 키가에 있다고 가정합니다 joeuser.key.

X.509는 표준 RSA 키를 사용하고 SSH도 사용하므로 SSH 클라이언트에게 사용하도록 지시 할 수 있어야 joeuser.key합니다. 유일한 요구 사항은 이해할 수있는 형식이어야한다는 것입니다.

내부를 joeuser.key보고 다음과 같은지 확인하십시오.

----- RSA 개인 키 시작 -----
MGECAQACEQCxQaFwijLYlXTOlwqnSW9PAgMBAAECEETwgqpzhX0IVhUa0OK0tgkC
CQDXPo7HDY3axQIJANLRsrFxClMDAghaZp7GwU2T1QIIMlVMo57Ihz8CCFSoKo3F
2L / 2
----- RSA 개인 키 종료 ------

Open SSL 에서이 형식은 "PEM"(과 같이 -outform pem)이며 기본적으로 사용됩니다. Open SSH 에서도 동일한 형식이 사용되며 ssh -i joeuser.key연결 하는 데 사용할 수 있습니다.

다음을 사용하여 공개 키를 OpenSSH id_rsa.pub형식으로 넣을 수 있습니다 authorized_keys.

ssh-keygen -y -f joeuser.key> joeuser-ssh.pub

PEM 형식의 동일한 공개 키는로 추출 할 수 openssl rsa -pubout있지만 거의 사용되지 않습니다.


당신이 DSA 키가있는 경우, 그것은 해야 정확히 RSA와 같은 동일한 작동합니다.


안녕하세요, 감사하지만 각 개발자마다 하나의 키 형식을 다른 키 형식으로 변환 할 수 있다는 것을 알고 있지만 가능한 한 많은 구성을 피하는 것이 문제입니다. 내가 기억하는 한 모든 클라이언트 브라우저에 509 인증서를 추가하는 것은 사소한 것이 아닙니다.

4
nraynaud : 개발자 입니다. 그들이 좋아하는 브라우저에 X.509 인증서를 설치할 수 없다면 (적어도 TFM을 따름) 이미 무섭습니다.
user1686

...어쨌든. NSS 기반 브라우저 (Firefox, Mozilla, Epiphany)의 경우 수정할 명령 행 도구 세트가 cert.db있습니다. Windows의 경우 certutil을 사용하거나 AD 그룹 정책을 통해 인증서를 설치할 수 있습니다. SSH는 전혀 구성이 필요하지 않으며 ssh-keygen -y -f두 파일을 모두 사용자의 homedir에 덤프합니다.
user1686

4
그들은 개발자가 아니며 학교와 인턴에서 신입생입니다. 나는 단지 자식, 웹 보안, 자바 스크립트, 보안 및 깨끗한 코드로 망치고 있습니다. 나는 단지 이런 종류의 비 개발 중심적인 것들을 제한하고 싶다. (또한, 나는 나에게 이런 종류의 바보 같은 것들을 강요하는 사람들을 싫어하기 때문에 다른 사람들에게 그것을 부과하지 않기를

2
이것이 작동하는 동안 나는 그것에 대해 조언 할 것입니다. 동일한 키를 사용하지만 다른 방식으로 다른 형식을 사용하고 있습니다. 사용자가 새 X.509 인증서를 생성하면 SSH 및 HTTPS에 다른 키를 사용하게됩니다. OpenSSH가 완전한 X.509 PKI (OpenVPN이 수행하는 방식, 스크립트를 사용하여 인증서를 LDAP에 연결하고 사용자가 적절한 그룹에 있는지 확인할 수있는 방식)를 지원하는 것이 합리적입니다.
Hubert Kario

5

OpenSSH는 x509 인증서를 실험적으로 지원합니다.

http://roumenpetrov.info/openssh

사용자 당 단일 x509 인증서를 발급하여 두 인증서에 모두 사용할 수 있습니다.

사용자 pubkey를 authorized_keys에 넣는 대신 사용자 인증서의 허용 된 DN을 지정할 수 있습니다. DN이 사용자 이름으로 변환되도록 웹 서버 / 웹 응용 프로그램을 구성해야합니다.


고마워하지만 설치가 내가 생각하는 구성보다 훨씬 나쁩니다.

패치 된 버전의 openssh를 설치하는 것을 의미합니까? 배포판으로 이미 배송되었을 수 있습니다 (적어도 Gentoo는 알고 있습니다). 두 응용 프로그램 모두에 동일한 RSA 키를 사용할 필요는 없지만 형식은 다릅니다. 여전히 각 사용자의 ssh 공개 키를 직접 설정해야합니다. x.509 키를 사용하는 OTOH는 CA를 별도로 유지할 수 있으며 공개 키에 대한 지식 없이도 SSH 또는 HTTPS에 새 사용자를 추가 할 수 있습니다. 일관된 DN 정책 만 선택하면됩니다.
b0fh

2
참고로,이 기능은 현재 OpenSSH의 메인 라인 버전에 있습니다.
Zoredache

1

SSH 키와 SSL 인증서는 서로 다른 동물이며 서로 교환 할 수 없다는 것을 알고 있습니다.

가장 좋은 방법은 싱글 사인온 / 공유 암호 저장소 / 웹 도구에 대한 모든 것을 구성하고 git / gitosis를 인증 제도로 남겨 두는 것입니다.

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