SSHとSSL(https)に同じキーを使用するにはどうすればよいですか


12

私は小さなチーム用の開発ツールをインストールしようとしていますが、認証を正しく取得できません。

私たちは分散チームであるため、サーバーはインターネット上にあります。そして、SSO +ゼロクライアント構成が必要です。

gitクライアントは基本認証のみを使用できますが、パスワードを保存せず、一部のIDEプラグインはUIでパスワードの質問を転送しないため、基本的にhttps + webdav上のgitは実用的ではありません。

sshでgitを使用する必要があります。gitosisをインストールしましたが、基本的に非対称キーで動作します。各開発者にキーをインストールするように依頼する必要があります。これを行うことができますが、ゼロ設定は忘れてください。

次に、httpsにあるWebツール(wiki、チケットなど)に開発者がアクセスできるようにしますが、今回は、SSH間で形式に互換性がないため、ログイン/パスワードまたは別の秘密キーを提供する必要がありますSSLとOSでのSSLの保存場所は同じではありません。今、私はSSOを忘れなければなりませんか?

私は間違っていますか?

回答:


11

TL; DRの概要: SSL / X.509証明書+キーがある場合は、秘密キーファイルをに渡しますsshまたは、既にSSHキーを持っている場合はid_rsa、CSRに署名するときに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のように正確に同じように機能します。


こんにちは、感謝しますが、開発者ごとに1つのキー形式を別のキー形式に変換できることは知っていますが、私の問題は、できる限り多くの構成を避けることです。私が覚えている限り(最近チェックしなかったことを告白します)、すべてのクライアントブラウザに509証明書を追加することは簡単ではありません。

4
nraynaud:彼らは開発者です。彼らがお気に入りのブラウザにX.509証明書をインストールできない場合(少なくともTFMに従って)、それはすでに怖いです。
user1686

...とにかく。NSSベースのブラウザー(Firefox、Mozilla、Epiphany)には、変更するコマンドラインツールのセットがありcert.dbます。Windowsの場合、certutilを使用して、またはADグループポリシーを通じて(と思う)証明書をインストールできます。SSHは設定を一切必要とせず、ssh-keygen -y -f両方のファイルをユーザーのhomedirにダンプするだけです。
user1686

4
彼らは開発者ではなく、学校やインターンの新入生です。git、Webセキュリティ、javascript、セキュリティ、クリーンコードでそれらを叩いているだけです。この種の非開発中心のものを制限したいだけです。(さらに、私はこの種の愚かなことを課す人々を嫌うので、他人にそれを課すことを避けるためだけに)

2
これは機能しますが、それに対してはアドバイスします。同じキーを使用していますが、異なる方法、異なる形式を使用しています。ユーザーが新しいX.509証明書を生成するときは、とにかくSSHとHTTPSに異なるキーを使用します。OpenSSHが完全なX.509 PKI(OpenVPNがサポートする方法で、スクリプトを使用して証明書をLDAPにリンクし、ユーザーが適切なグループに属しているかどうかを確認する方法)をサポートする場合に意味があります。
ヒューバートカリオ

5

OpenSSHは、ここでx509証明書の実験的なサポートを提供しています。

http://roumenpetrov.info/openssh

ユーザーごとに1つのx509証明書を発行し、両方に使用できます。

ユーザーpubkeyをauthorized_keysに入れる代わりに、ユーザー証明書の許可されたDNを指定できます。DNがユーザー名に変換されるようにwebserver / webアプリケーションを設定する必要があります。


どうもありがとう、しかしインストールは私が考える構成よりさらに悪いです。

あなたはopensshのパッチを当てたバージョンをインストールするということですか?ディストリビューションによってすでに出荷されている可能性があります(少なくともGentooが出荷していることは知っています)。両方のアプリケーションで同じRSAキーを異なる形式で使用しても意味はありません。各ユーザーのssh公開キーを手動で設定する必要があります。OTOH、x.509キーを使用すると、CAを分離でき、公開キーを知らなくても新しいユーザーをSSHまたはHTTPSに追加できます。一貫したDNポリシーを選択するだけで済みます...
b0fh

2
参考までに、この機能は現在OpenSSHのメインラインバージョンにあります。
ゾレダチェ

1

あなたはほとんど運がありません-SSHキーとSSL証明書は異なる動物であり、私が知る限り、それらは互換性がありません。

あなたの最善の策は、おそらくシングルサインオン/共有パスワードストア/あなたのウェブツール用のものを設定し、git / gitosisを認証アイランドとして残すことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.