Denen blog

株式会社電縁の社員によるブログです。

プロキシ環境でのUbuntuサーバの設定方法

こんにちは

イノベーションオフィスの吉田です。

 

最近はセキュリティの関係で社内からインターネットを閲覧するのにプロキシサーバを経由する会社さんも多いかと思います。

弊社もそうなのですが、そんな環境で Ubuntu サーバをいじっていたら少しはまってしまったのでご紹介したいと思います。

 

前提

今回のOSはUbuntu 16.04でした。

社内にプロキシサーバが設置されており、IEなどで以下のような設定が行われています。

f:id:yasuaki-sakai:20180315180750j:plain

さらにHTTPS通信の監視用に、プロキシサーバの証明書が用意されており、それをインストールする必要があります。

※ここが重要!

 

共通設定

ネット上にはいくつか設定方法が散見されますが、個人的には以下の方法が楽だと思います。

$ sudo vim /etc/environment

http_proxy="http://{Proxy Host}:{Proxy Port}/"
https_proxy="https://{Proxy Host}:{Proxy Port}/"

さらに証明書のインストールを行います。

$ sudo cp my.crt /usr/share/ca-certificates
$ sudo vim /etc/ca-certificates.conf

my.crt

$ sudo update-ca-certificates

これだけで、一度ログインしなおせば apt や wget など問題なく動くでしょう。

 

例外が・・・

大体は上記の通りで問題無いのですが、私の環境では composer の動作がうまくいきませんでした。

composer のインストールはうまくいったのですが、診断(diag)をしてみると以下のようなエラーが出てしまっていました。

[Composer\Downloader\TransportException] The "https://packagist.org/packages.json" file could not be downloaded: Failed to enable crypto
failed to open stream: operation failed

ざっとネットで調べてみると以下の環境変数を設定してみるといいとのことでした。

HTTP_PROXY_REQUEST_FULLURI=0
HTTPS_PROXY_REQUEST_FULLURI=0

でもこれも人によって違うようで、HTTP_* だけ 1 がいいとかなんて情報もあります。

全パターン(4通り)試してみましたが、私の環境ではダメでした。

 

続いて、composer 内部で curl を使っており、そいつが使用している証明書を更新するといいなんて情報がありました。

$ wget http://curl.haxx.se/ca/cacert.pem
$ cp -v -f cacert.pem /full/path/to/certs/ca-bundle-curl.crt
$ sudo vim /etc/php.ini

curl.cainfo=/full/path/to/ssl/certs/ca-bundle-curl.crt
openssl.cafile=/full/path/to/ssl/certs/ca-bundle-curl.crt

こちらも試してみましたがダメでした・・・

 

で、結局動作したのが以下の状態でした。

1. curl, openssl の設定は元に戻す。

こちらは元々コメントアウトされている項目なので、もし変更していた場合はコメントアウトします。

2. 環境変数を以下の用に設定

$ export http_proxy=http://{Proxy Host}:{Proxy Port}
$ export HTTP_PROXY=http://{Proxy Host}:{Proxy Port}
$ export https_proxy=""
$ export HTTPS_PROXY=""
$ unset HTTP_PROXY_REQUEST_FULLURI
$ unset HTTPS_PROXY_REQUEST_FULLURI

これで composer diag してみると・・・うまくいきました!

私の環境特有の理由が有るかもしれませんが、参考になったら幸いです。

 

それでは。

 

書いた人:イノベーションオフィス 室長 吉田

f:id:yasuaki-sakai:20171204190702j:plain