⇤ ← 2015-03-17 16:19:59時点のリビジョン1
サイズ: 120
コメント:
|
サイズ: 5351
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 1: | 行 1: |
このページでは、TLS接続を有効にしたxrdpをセットアップする方法について解説します。 | <<TableOfContents>> このページでは、TLS 接続を有効にした xrdp をセットアップする方法について解説します。 == 対象バージョン == 2015年3月現在、TLS 対応バージョンの xrdp は正式にリリースはされていませんが、開発版では TLS が既にサポートされています。 [[https://github.com/neutrinolabs/xrdp/commit/52cac060923ab40fba27e37b108745acd4e9f837|2014年11月21日以降の開発版]]で TLS が安定して動作するようになっています。 また、近日中に TLS 対応の 0.8.1 をリリースすると、開発者の [[https://github.com/neutrinolabs/xrdp/issues/162#issuecomment-75826370|Jay Sorg が発言しています]]。 インストールされている xrdp のバージョンがわからない場合は /etc/xrdp/xrdp.ini に以下のような記述があるか確認することでも、TLS 対応しているかの目安になります。 {{{ # security layer can be 'tls', 'rdp' or 'negotiate' # for client compatible layer security_layer=rdp # X.509 certificate and private key # openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 certificate= key_file= }}} == 対象環境 == 本ページの内容は以下の環境でテストしましたが、他の環境でもほぼ同様です。 * Ubuntu 14.04.1 LTS * xrdp master 20150108版 ([[https://github.com/neutrinolabs/xrdp/commit/ee8998483beee0db30c3e8b5d7bc3d2fa7d80c9d|ee89984]]) == 設定方法 == === TLS 証明書の作成 === まず最初に xrdp で使用する秘密鍵と証明書を作成する必要があります。正式な認証局に署名してもらった証明書がある場合は、それを使用しても構いません。 正式な証明書を使用しない場合は、自己署名証明書(オレオレ証明書)を作成して使用することになります。 詳しい作成方法は本ページでは説明しないので、以下のページなどを参照して作成してください。 * [[http://d.hatena.ne.jp/ozuma/20130511/1368284304|オレオレ証明書をopensslで作る(詳細版) - ろば電子が詰まっている]] とりあえずお手軽に作成したい場合は、以下のコマンドで作成することができます。 {{{ $ openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 }}} 下のように途中でいくつか入力を求められますが、何も入力せずひたすら Enter でも OK です。 {{{ Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: Email Address []: }}} 上手くいくと '''cert.pem''' と '''key.pem''' という2つのファイルができます。 === TLS 証明書の配置 === 前のステップで作成した '''cert.pem''' と '''key.pem''' を /etc/xrdp に置きます。正式な証明書を持っている場合は、ファイル名は必ずしもこの通りになっていなくても大丈夫ですが、秘密鍵が key.pem 証明書が cert.pem というファイル名になっている前提で説明します。 コマンド実行例: {{{ $ sudo cp cert.pem key.pem /etc/xrdp }}} 次に、配置した証明書の場所を xrdp.ini 内の '''certificate''', '''key_file''' に設定します。sudoedit コマンドなどを使用して xrdp.ini を書き換えます。 {{{ $ sudoedit /etc/xrdp/xrdp.ini }}} 差分はこんな感じです。certificate, key_file のデフォルト値はそれぞれ /etc/xrdp/cert.pem, /etc/xrdp/key.pem なので空欄にしたままでも同じなのですが、説明のために明示的に書いています。証明書と秘密鍵のファイル名が異なる場合は、実際の環境に合ったものを指定してください。 {{{ --- /etc/xrdp/xrdp.ini.orig 2015-03-18 02:19:39.004806000 +0900 +++ /etc/xrdp/xrdp.ini 2015-03-18 02:20:26.884806000 +0900 @@ -13,11 +13,11 @@ crypt_level=high # security layer can be 'tls', 'rdp' or 'negotiate' # for client compatible layer -security_layer=rdp +security_layer=tls # X.509 certificate and private key # openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 -certificate= -key_file= +certificate=/etc/xrdp/cert.pem +key_file=/etc/xrdp/key.pem # regulate if the listening socket use socket option tcp_nodelay # no buffering will be performed in the TCP stack }}} === セキュリティレイヤの設定 === 一つ前の差分にも含まれていますが '''security_layer=rdp''' となっている部分を '''security_layer=tls''' と書き換えます。 これは RDP 接続の暗号化方法の指定で、'''rdp''' を指定した場合は従来の RC4 による暗号化、'''tls''' を指定した場合は TLS による暗号化、'''negociate''' を指定した場合は、クライアントが対応している方法を自動的に判別します。 今回はより安全な接続をセットアップするため、従来の RC4 を使用せず TLS のみを使用するよう '''security_layer=tls''' としておきます。 |
このページでは、TLS 接続を有効にした xrdp をセットアップする方法について解説します。
対象バージョン
2015年3月現在、TLS 対応バージョンの xrdp は正式にリリースはされていませんが、開発版では TLS が既にサポートされています。 2014年11月21日以降の開発版で TLS が安定して動作するようになっています。 また、近日中に TLS 対応の 0.8.1 をリリースすると、開発者の Jay Sorg が発言しています。
インストールされている xrdp のバージョンがわからない場合は /etc/xrdp/xrdp.ini に以下のような記述があるか確認することでも、TLS 対応しているかの目安になります。
# security layer can be 'tls', 'rdp' or 'negotiate' # for client compatible layer security_layer=rdp # X.509 certificate and private key # openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 certificate= key_file=
対象環境
本ページの内容は以下の環境でテストしましたが、他の環境でもほぼ同様です。
- Ubuntu 14.04.1 LTS
xrdp master 20150108版 (ee89984)
設定方法
TLS 証明書の作成
まず最初に xrdp で使用する秘密鍵と証明書を作成する必要があります。正式な認証局に署名してもらった証明書がある場合は、それを使用しても構いません。 正式な証明書を使用しない場合は、自己署名証明書(オレオレ証明書)を作成して使用することになります。
詳しい作成方法は本ページでは説明しないので、以下のページなどを参照して作成してください。
とりあえずお手軽に作成したい場合は、以下のコマンドで作成することができます。
$ openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365
下のように途中でいくつか入力を求められますが、何も入力せずひたすら Enter でも OK です。
Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: Email Address []:
上手くいくと cert.pem と key.pem という2つのファイルができます。
TLS 証明書の配置
前のステップで作成した cert.pem と key.pem を /etc/xrdp に置きます。正式な証明書を持っている場合は、ファイル名は必ずしもこの通りになっていなくても大丈夫ですが、秘密鍵が key.pem 証明書が cert.pem というファイル名になっている前提で説明します。
コマンド実行例:
$ sudo cp cert.pem key.pem /etc/xrdp
次に、配置した証明書の場所を xrdp.ini 内の certificate, key_file に設定します。sudoedit コマンドなどを使用して xrdp.ini を書き換えます。
$ sudoedit /etc/xrdp/xrdp.ini
差分はこんな感じです。certificate, key_file のデフォルト値はそれぞれ /etc/xrdp/cert.pem, /etc/xrdp/key.pem なので空欄にしたままでも同じなのですが、説明のために明示的に書いています。証明書と秘密鍵のファイル名が異なる場合は、実際の環境に合ったものを指定してください。
--- /etc/xrdp/xrdp.ini.orig 2015-03-18 02:19:39.004806000 +0900 +++ /etc/xrdp/xrdp.ini 2015-03-18 02:20:26.884806000 +0900 @@ -13,11 +13,11 @@ crypt_level=high # security layer can be 'tls', 'rdp' or 'negotiate' # for client compatible layer -security_layer=rdp +security_layer=tls # X.509 certificate and private key # openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 -certificate= -key_file= +certificate=/etc/xrdp/cert.pem +key_file=/etc/xrdp/key.pem # regulate if the listening socket use socket option tcp_nodelay # no buffering will be performed in the TCP stack
セキュリティレイヤの設定
一つ前の差分にも含まれていますが security_layer=rdp となっている部分を security_layer=tls と書き換えます。
これは RDP 接続の暗号化方法の指定で、rdp を指定した場合は従来の RC4 による暗号化、tls を指定した場合は TLS による暗号化、negociate を指定した場合は、クライアントが対応している方法を自動的に判別します。
今回はより安全な接続をセットアップするため、従来の RC4 を使用せず TLS のみを使用するよう security_layer=tls としておきます。