プロジェクターは、リモートサーバーでIntelliJ IDEAを実行する方法です。私は最近これについての記事を書きましたが、パラノイアにとって重要なこと、つまりWebソケット上のデータの暗号化については黙っていました。
キーの生成と設定は、かなり退屈な作業です。ここでは、Dockerの機能とJavaの暗号化について理解する必要があります。残念ながら、これはJavaであり、JetBrainsの担当者はまったく責任を負わないため、これを回避することはできません。
元の記事では、このテキストはスポイラーで覆われていましたが、そのようなテキストの壁を読むことは不可能だと感じ、このテキストを誕生させました。事前に申し訳ありません。この記事を開くと、表示された内容が気に入らないことに同意したことになります。
キーの生成
最初に、一連のキーを生成する必要があります。これを行うには、OpenJDKをインストールし、keytoolツールを使用する必要があります。
キーの生成は一連のステップです。自分でスクリプトを書いたので、ぜひ使ってみてください。
mkdir ~/keystore
cd ~/keystore
curl https://raw.githubusercontent.com/projectile-ide/projectile-keymaker/master/projectile-keymaker --output ./keymaker
chmod 755 ./keymaker
./projectile-keymaker projector idea true IP 192.168.1.1 mypassword
, . , : ca.crt
server.jks
.
ca.crt
— Certificate Authority, . .server.jks
— IDEA.
- , . .
Certificate Authority (CA), .
keytool -genkeypair -v \
-alias ca \
-dname "CN=myCA, OU=Development, O=myCA, L=SPB, S=SPB, C=RU" \
-keystore ca.jks \
-keypass:env PW \
-storepass:env PW \
-keyalg RSA \
-keysize 4096 \
-ext KeyUsage:critical="keyCertSign" \
-ext BasicConstraints:critical="ca:true" \
-validity 9999
: -keypass:env PW
. , ( bash history), .
export PW=mypassword
, bash history. .
, :
export PW=`pwgen -Bs 10 1`
echo $PW > password
:
export PW=`cat password`
, ? , , . , — . , , PW
.
...
CA , - JKS, . , crt:
keytool -export -v \
-alias ca \
-file ca.crt \
-keypass:env PW \
-storepass:env PW \
-keystore ca.jks \
-rfc
(, ):
keytool -genkeypair -v \
-alias server \
-dname "CN=myServer, OU=Development, O=myServer, L=SPB, S=SPB, C=RU" \
-keystore server.jks \
-keypass:env PW \
-storepass:env PW \
-keyalg RSA \
-keysize 2048 \
-validity 385
, . , :
keytool -certreq -v \
-alias server \
-keypass:env PW \
-storepass:env PW \
-keystore server.jks \
-file server.csr
CA, :
keytool -gencert -v \
-alias ca \
-keypass:env PW \
-storepass:env PW \
-keystore ca.jks \
-infile server.csr \
-outfile server.crt \
-ext KeyUsage:critical="digitalSignature,keyEncipherment" \
-ext EKU="serverAuth" \
-ext SAN="IP:192.168.1.1" \
-rfc
, SAN : "DNS:website.com", . "IP:192.168.1.1", . IP, , , .
, , JKS CA ( ):
keytool -import -v \
-alias ca \
-file ca.crt \
-keystore server.jks \
-storetype JKS \
-storepass:env PW << EOF
yes
EOF
JKS:
keytool -import -v \
-alias server \
-file server.crt \
-keystore server.jks \
-storetype JKS \
-storepass:env PW
, :
keytool -list -v \
-keystore server.jks \
-storepass:env PW
/home/olegchir/keystore/ssl.properties
:
STORE_TYPE=JKS
FILE_PATH=/tmp/server.jks
STORE_PASSWORD=mypassword
KEY_PASSWORD=mypassword
, , , .
(/home/olegchir
) , - . , , . olegchir
, .
/tmp/server.jks
, /home/olegchir/keystore/server.jks
? , , . .
Projector, . docker run
, .
, run-container.sh
:
docker run --rm -p 8080:8080 -p 8887:8887 -it "$containerName" bash -c "nginx && ./run.sh"
:
ORG_JETBRAINS_PROJECTOR_SERVER_SSL_PROPERTIES_PATH
;ORG_JETBRAINS_PROJECTOR_SERVER_HANDSHAKE_TOKEN
, URL, ;- ( )
/tmp
.
docker run --rm \
-v /home/olegchir/keystore/ssl.properties:/tmp/ssl.properties \
-v /home/olegchir/keystore/server.jks:/tmp/server.jks \
--env ORG_JETBRAINS_PROJECTOR_SERVER_SSL_PROPERTIES_PATH=/tmp/ssl.properties \
--env ORG_JETBRAINS_PROJECTOR_SERVER_HANDSHAKE_TOKEN=mypassword \
-p 8080:8080 -p 8887:8887 -it "$containerName" bash -c "nginx && ./run.sh"
!
./run-container.sh
- . :
[INFO] :: ProjectorServer :: WebSocket SSL is enabled: /tmp/ssl.properties
[INFO] :: ProjectorServer :: Server started
ca.crt
, . .
-. , .
Firefox:
- Privacy & Security
- — View Certificates
- Authorities
- Import...
- , .
- .
Chrome Windows:
- Privacy and security
- Securty
- Manage certificates
- Trusted Root Certification Authorities
- Import...
- , , Trusted Root Certification Authorities.
- Chrome. Windows . Chrome, , Chrome. Delete.
- Chrome .
Chrome Linux:
- Privacy and security
- Securty
- Manage certificates
- Authorities
- Import...
-
ca.crt
, - , .
- .
Chrome Fully Kiosk Browser Android:
Android . Huawei MediaPad M5 Solid Explorer .
:
- Settings
- Security & privacy
- More Settings
- Encription and credentials
- Install from storage
-
ca.crt
- .
, Android- , "Install from storage" , . .
: https://localhost:8080/projector/?wss&token=mypassword
: https://hostname:8080/projector/?wss&host=hostname&port=8887&token=mypassword
, https://hostname:8887
, . , " " - . , .
安全な接続の設定は長くてイライラします。暗記することができない多くのコマンドをコンソールに入力する必要があります。dockerfilesを駆け巡り、ファイルをモバイルデバイスに転送します。少なくとも1つの文字のどこかで間違いを犯した場合、何も機能しません。
一方、私はそれを1度やった-そして平和に暮らしている。