CentOS 6でLet’s Encryptを運用する際の工夫

2018/10/16 技術系 投稿者:

こんにちは、千本木です。

WEBサイトの常時SSL化が進む昨今、無料のSSL証明書であるLet’s Encryptをインストールする機会も増えてきました。
弊社ではCentOSで稼働しているサーバが多いのですが、最新バージョンのCentOS 7だけでなく、CentOS 6で稼働するサーバもまだまだ多くあります。

実際にLet’s Encryptの証明書発行を行ってみると、CentOS 7では労せず動くのに対して、CentOS 6ではちょっとした工夫が必要になりました。
今回はその工夫について記事にしたいと思います。

下準備

Let’s Encryptの証明書を取得する際にはcertbot-autoというコマンドをインストールして使用することになりますが、このcertbot-autoを使用するためにはpython 2.7以上が必要となります。

pythonのバージョンが古く、そのままではLet’s Encryptが動かない

実はCentOS 6のpythonのバージョンはというと

# python --version
Python 2.6.6

ご覧の通り2.6系がインストールされてしまっているため、そのままだと証明書取得に進むことができなくなります。
では削除して新しいバージョンを入れなおせば良いかというと、pythonと依存関係にあるアプリケーションが数多くあるため、現実的に対応ができません。

Software Collectionで対応する

ではどうするかというと、python 2.6系と2.7系を共存させるという手段を取ります。

CentOS向けに公式にSoftware Collectionsというリポジトリがあり、これを使うことで標準パッケージと別バージョンのパッケージを共存させることが可能になります。

やり方は簡単。リポジトリをインストールし、パッケージをインストールすればOKです。

# yum install centos-release-scl-rh
# yum install python27

# vi /etc/profile.d/python27.sh
-----------------------------------------------------
#!/bin/bash

source /opt/rh/python27/enable
export X_SCLS="`scl enable python27 'echo $X_SCLS'`"
-----------------------------------------------------

この後いったんログアウトするか、 profileを再読み込みさせてからpythonのバージョン確認を行います。

# python --version
Python 2.7.13

ばっちりバージョンが変わりました。
以上でpython 2.7系が使えるようになりました。

certbot-autoを使った証明書取得

これで下準備ができましたので、certbot-autoを取得して使えるようにします。

# curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
# chmod 700 /usr/bin/certbot-auto

また、libcurlとnssが必要になるため事前にインストールしておきます。

# yum update libcurl
# yum update nss

ここで先ほど取得したcertbot-autoが正常に動くかテストします。

# certbot-auto --version

意外なエラー発生

ここまで順調に来ましたが、特定環境下で以下のエラーが出ることがわかりました。

# certbot-auto --version

Bootstrapping dependencies for RedHat-based OSes... (you can skip this with --no-bootstrap)
yum is /usr/bin/yum
yum is hashed (/usr/bin/yum)
読み込んだ??ゥぅ鷓fastestmirror, security
イ?ゥ函璽觸萢・寮瀋蠅鬚靴討い?
耕oading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
パaケージ gcc-4.4.7-18.el6_9.2.x86_64 はインス?ゼル済?か最新アミ炎ジョンです
パaケージ augeas-libs-1.0.0-10.el6.x86_64 はインス?ゼル済?か最新アミ炎ジョンです
パaケージ openssl-1.0.1e-57.el6.x86_64 はインス?ゼル済?か最新アミ炎ジョンです
パaケージ openssl-devel-1.0.1e-57.el6.x86_64 はインス?ゼル済?か最新アミ炎ジョンです
パaケージ libffi-devel-3.0.5-3.2.el6.x86_64 はインス?ゼル済?か最新アミ炎ジョンです
パaケージ redhat-rpm-config-9.0.3-51.el6.centos.noarch はインス?ゼル済?か最新アミ炎ジョンです
パaケージ ca-certificates-2017.2.14-65.0.1.el6_9.noarch はインス?ゼル済?か最新アミ炎ジョンです
パaケージ python-devel-2.6.6-66.el6_8.x86_64 はインス?ゼル済?か最新アミ炎ジョンです
パaケージ python-virtualenv-12.0.7-1.el6.noarch はインス?ゼル済?か最新アミ炎ジョンです
パaケージ python-tools-2.6.6-66.el6_8.x86_64 はインス?ゼル済?か最新アミ炎ジョンです
パaケージ python-pip-7.1.0-1.el6.noarch はインス?ゼル済?か最新アミ炎ジョンです
何?い泙擦
鹵reating virtual environment...
Installing Python packages...
Had a problem while installing Python packages.

pip prints the following errors:
=====================================================
Exception:
Traceback (most recent call last):
  File "/opt/eff.org/certbot/venv/lib/python2.7/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/opt/eff.org/certbot/venv/lib/python2.7/site-packages/pip/commands/install.py", line 272, in run
    with self._build_session(options) as session:
  File "/opt/eff.org/certbot/venv/lib/python2.7/site-packages/pip/basecommand.py", line 72, in _build_session
    insecure_hosts=options.trusted_hosts,
  File "/opt/eff.org/certbot/venv/lib/python2.7/site-packages/pip/download.py", line 329, in __init__
    self.headers["User-Agent"] = user_agent()
  File "/opt/eff.org/certbot/venv/lib/python2.7/site-packages/pip/download.py", line 93, in user_agent
    from pip._vendor import distro
  File "/opt/eff.org/certbot/venv/lib/python2.7/site-packages/pip/_vendor/distro.py", line 1050, in <module>
    _distro = LinuxDistribution()
  File "/opt/eff.org/certbot/venv/lib/python2.7/site-packages/pip/_vendor/distro.py", line 594, in __init__
    if include_lsb else {}
  File "/opt/eff.org/certbot/venv/lib/python2.7/site-packages/pip/_vendor/distro.py", line 922, in _get_lsb_release_info
    stdout, stderr = stdout.decode('utf-8'), stderr.decode('utf-8')
  File "/opt/eff.org/certbot/venv/lib64/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa5 in position 22: invalid start byte
=====================================================

Certbot has problem setting up the virtual environment.

We were not be able to guess the right solution from your pip
output.

Consult https://certbot.eff.org/docs/install.html#problems-with-python-virtual-environment
for possible solutions.
You may also find some support resources at https://certbot.eff.org/support/ .

他のサーバでは問題がないにも関わらず、あるサーバではこのエラーが発生した後、進まなくなってしまいました。

原因は意外なアイツ

エラー内容を良く読めばわかるのですが、原因はサーバ側の文字コードにありました。

# cat /etc/sysconfig/i18n
LANG="ja_JP.eucJP"

なんとこのサーバ、EUC-JP環境で動いていたのです・・・。
certbot-autoはUTF-8環境で動かすことを想定しているためEUC-JP環境だと動かないということがわかりました。

ちなみに以下のようにLANGを指定することで回避させることができました。

# LANG=ja_JP.UTF-8 certbot-auto --version

後はバーチャル設定を行ったうえで以下のようなコマンドでCentOS 7と同じようにcertbot-autoで証明書の取得を行うことができました。

certbot-auto certonly --webroot -w /www/vhost/test.nedia.ne.jp -d test.nedia.ne.jp --email xxxxxxxx@nedia.ne.jp

まとめ

私が行った工夫、いかがでしたでしょうか。
冒頭でも述べた通り、CentOS 6で動いているサーバはまだ多くありますので、インストール時の参考にしていただければ幸いです。

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
群馬データセンター
群馬の法人ITサポートサービス Wide Net[ワイドネット]
Wide Netのクラウドバックアップ
クラウド型ファイル共有サービスRushDrive
ワイドオフィス
ネディアのSDGsへの取り組み
健康経営優良法人
IT-commons(ITコモンズ)