■ソース取得
・binutils
http://ftp.gnu.org/gnu/binutils/
上記から最新バージョンのtarアーカイブ取得
・LLVM他
gitで取得
git clone http://llvm.org/git/llvm
cd tools
git clone http://llvm.org/git/clang
git clone http://llvm.org/git/lldb
■ビルド
・binutils
cd binutils
mkdir build
../configure --target=arm-eabihf --enable-threads --enable-shared
make; make install
(注意)
../configure --target=arm-eabihf --enable-targets=arm とするとエラー発生
複数ARM用のビルド設定は出来ない様子
・clang, llvm, lldb
cd llvm
mkdir build
cd build
../configure --target=arm-eabihf --enable-threads --enable-shared --enable-optimized --disable-assertions --with-abi=aapcs-vfp --with-cpu=cortex-a9 --with-float=hard --with-fpu=neon
make; make install
2015年8月11日火曜日
2015年8月5日水曜日
ドメイン名の取得とサーバー証明書
■経緯
VPSのサーバー証明書を取るのに必要になった
→さくらVPSのデフォルトドメインでKingSSLのサーバー証明書を取ろうとしたらフィッシング審査ではじかれたため
→sakura.ne.jpがかつてフィッシングサーバとして使われたからか?
■取得先
お名前どっとこむ
割と安いしメジャーな様子
→安いと思いきや罠あり。Whois代行がドメイン登録時は無料だが更新後から1000円/年かかる
これはドメイン更新費用より高く割に合わない
ムームードメイン
こちらもメジャーなうえ、Whois代行が無料。
登録時の費用はお名前ドットコムより高いが更新も考えるとこちらの方が安い
(補足)
お名前ドットコムもムームードメインもどちらもGMOのグループ会社
サービス内容については大差無い
■取得契約内容
・TLD(Top Level Domain): 値段と目的で .workにする
・Whois代行: ON
Whois代行とはドメイン取得所在地、所有者情報を個人名から登録代行業者に変更すること
■契約後の設定
・さくらVPSドメイン設定から取得したドメイン名を登録
その際にさくらのDNSサーバアドレスが表示されるので控えておく
今回はns1.dns.ne.jp, ns2.dns.ne.jp だった
・ムームードメインの設定から外部DNSを使用を選択
さくらのDNSサーバアドレス2つを登録する
■SSLサーバ証明書
・秘密鍵生成
openssl genrsa -des3 -out [秘密鍵ファイル名] 4096
鍵にパスフレーズをつけないのであれば-des3オプションは不要
・CSR生成
openssl req -new -key [秘密鍵ファイル名] -out [出力CSRファイル名.csr]
・証明書要求
今回はKingSSLにした。安いので
申し込みページのCSR欄に生成したCSRをエディタで表示した内容をコピーペーストする
簡易ドメイン審査が行われた後にドメイン宛にメールが送られる。
送り先アドレスはpostmaster@やwebmaster@が選択できる
サーバー側でpostfixを動作させてメールを受け取れるようにしておくこと
念のため/etc/aliases でローカルアカウントと外部メールの両方に転送しておくといいかもしれない
/etc/aliasesの転送先はカンマ区切りで複数指定できる
・申し込み後に承認確認メールが来るので承認URLをブラウザで開いて確定する
確定後に証明書情報が送られてくる。
■クライアント証明書
・秘密鍵生成
openssl genrsa -out [キーファイル名] 4096
・CSR生成
openssl req -new -key [キーファイル名] -out [CSRファイル名]
・署名
openssl ca -in [CSRファイル名] -config /etc/ssl/openssl.cnf -out [クライアント証明書ファイル名]
■はまった点
メールを外部転送しなかったので添付ファイルを開くのに苦労した。
コマンドラインからメールを開くにはbase64 contentの部分だけ抜き出してファイル保存をする
そして以下のコマンドで復号する
openssl base64 -d -in <infile> -out <outfile>
VPSのサーバー証明書を取るのに必要になった
→さくらVPSのデフォルトドメインでKingSSLのサーバー証明書を取ろうとしたらフィッシング審査ではじかれたため
→sakura.ne.jpがかつてフィッシングサーバとして使われたからか?
■取得先
→安いと思いきや罠あり。Whois代行がドメイン登録時は無料だが更新後から1000円/年かかる
これはドメイン更新費用より高く割に合わない
ムームードメイン
こちらもメジャーなうえ、Whois代行が無料。
登録時の費用はお名前ドットコムより高いが更新も考えるとこちらの方が安い
(補足)
お名前ドットコムもムームードメインもどちらもGMOのグループ会社
サービス内容については大差無い
■取得契約内容
・TLD(Top Level Domain): 値段と目的で .workにする
・Whois代行: ON
Whois代行とはドメイン取得所在地、所有者情報を個人名から登録代行業者に変更すること
■契約後の設定
・さくらVPSドメイン設定から取得したドメイン名を登録
その際にさくらのDNSサーバアドレスが表示されるので控えておく
今回はns1.dns.ne.jp, ns2.dns.ne.jp だった
・ムームードメインの設定から外部DNSを使用を選択
さくらのDNSサーバアドレス2つを登録する
■SSLサーバ証明書
・秘密鍵生成
openssl genrsa -des3 -out [秘密鍵ファイル名] 4096
鍵にパスフレーズをつけないのであれば-des3オプションは不要
・CSR生成
openssl req -new -key [秘密鍵ファイル名] -out [出力CSRファイル名.csr]
・証明書要求
今回はKingSSLにした。安いので
申し込みページのCSR欄に生成したCSRをエディタで表示した内容をコピーペーストする
簡易ドメイン審査が行われた後にドメイン宛にメールが送られる。
送り先アドレスはpostmaster@やwebmaster@が選択できる
サーバー側でpostfixを動作させてメールを受け取れるようにしておくこと
念のため/etc/aliases でローカルアカウントと外部メールの両方に転送しておくといいかもしれない
/etc/aliasesの転送先はカンマ区切りで複数指定できる
・申し込み後に承認確認メールが来るので承認URLをブラウザで開いて確定する
確定後に証明書情報が送られてくる。
■クライアント証明書
・秘密鍵生成
openssl genrsa -out [キーファイル名] 4096
・CSR生成
openssl req -new -key [キーファイル名] -out [CSRファイル名]
・署名
openssl ca -in [CSRファイル名] -config /etc/ssl/openssl.cnf -out [クライアント証明書ファイル名]
■はまった点
メールを外部転送しなかったので添付ファイルを開くのに苦労した。
コマンドラインからメールを開くにはbase64 contentの部分だけ抜き出してファイル保存をする
そして以下のコマンドで復号する
openssl base64 -d -in <infile> -out <outfile>
2015年7月23日木曜日
msys2 - clang作成
■準備
以下のパッケージをインストール。64bit版を想定
・mingw-w64-x86_64-toolchain
→32ビットにしたいならmingw-w64-i686-toolchain
・diffutils
・git
■llvmファイル一式取得
適当なワークフォルダに移動してgitで取得
git clone http://llvm.org/git/llvm
cd tools
git clone http://llvm.org/git/clang
git clone http://llvm.org/git/libcxx
cd ../projects
git clone http://llvm.org/git/compiler-rt
cd ..
■ビルド
ARMクロスコンパイルもしたいのでx86, x86_64, arm, arm64をターゲットとしてビルドする
mkdir build
cd build
../configure --enable-targets=x86_64,x86,arm,aarch64 --disable-assertions --enable-optimized
make; make install
msys2インストール
■インストール後アップデート
pacman -Suy
もし下記エラーが出る場合は
pacman -Suy
もし下記エラーが出る場合は
error: GPGME error: No data
error: GPGME error: No data
error: GPGME error: No data
rm -r /var/lib/pacman/sync
pacman -Syuf
アップデート後はターミナルを再起動する
2015年4月29日水曜日
Apache2のセキュリティ設定(基本)
■ヘッダ情報削減
・HTTPレスポンスヘッダのサーバ情報を減らす
/etc/apache2/conf-available/security.conf
ServerTokens OS → ServerTokens Prod
ヘッダにApacheやOSのバージョン情報を入れない
・ヘッダ識別子非表示
ServerSignature On → ServerSignature Off
■Apacheトップページの非表示
http://ドメイン名/ で表示されるApacheのサンプルページの非表示
/etc/apache2/conf-available/security.conf
<Directory />
AllowOverride None
Order Deny,Allow
Deny from all
</Directory>
これがコメントアウトされていたらはずす。無ければ追記
・HTTPレスポンスヘッダのサーバ情報を減らす
/etc/apache2/conf-available/security.conf
ServerTokens OS → ServerTokens Prod
ヘッダにApacheやOSのバージョン情報を入れない
・ヘッダ識別子非表示
ServerSignature On → ServerSignature Off
■Apacheトップページの非表示
http://ドメイン名/ で表示されるApacheのサンプルページの非表示
/etc/apache2/conf-available/security.conf
<Directory />
AllowOverride None
Order Deny,Allow
Deny from all
</Directory>
これがコメントアウトされていたらはずす。無ければ追記
[Ubuntu] Gitolite3 + Apache2 + SSLクライアント認証
■目的
自分で立てたgitサーバーに対してhttps プロトコルでクライアント認証アクセスする
■インストール
Apache2はインストール済みとする
・Gitolite3インストール
apt-get install gitolite3
インストール中に管理者の公開鍵パスを要求されるので適当にSSHログインできる公開鍵を指定する
→これは後で変更も可能なので適当でOK
インストールが完了するとGitolite3のファイル群は /usr/share/gitolite3
環境は /var/lib/gitolite3 に作成される。
■Apache2準備
まずはApache2の準備
・ apache-suexec-custom のインストール
apt-get install apache-suexec-custom
a2enmod suexec
・mod_cgid 有効化
a2enmod cgid
・gitolite ラッパースクリプト用意
DocumentRoot が /var/www だとしたら /var/www/git というフォルダを作成する。
ここにスクリプトを追加する。 gitolite-suexec-wrapper.sh とする。
→スクリプトを置くフォルダは/var/www/git でなくても良いが、DocumentRootで指定したフォルダのサブフォルダでないとsuexecがスクリプトを実行できないので注意
(gitolite-suexec-wrapper.sh)
===============================================================================
#!/bin/bash
export GIT_PROJECT_ROOT="/var/lib/gitolite3/repositories"
export GITOLITE_HTTP_HOME="var/lib/gitolite3"
exec /usr/share/gitolite3/gitolite-shell
===============================================================================
chown gitolite3:gitolite3 gitolite-suexec-wrapper.sh
chmod +x /var/gitolite/gitolite-suexec-wrapper.sh
として所有者、実行権限を変更する。
・SSLクライアント認証設定
VirtualHost の設定に以下を追加
===============================================================================
SSLEngine on
SSLCertificateFile <サーバー証明書のパス>
SSLCertificateKeyFile <サーバ秘密鍵のパス>
SSLCACertficateFile <CA証明書のパス>
SSLVerifyClient require
SSLUserName SSL_CLIENT_S_DN_CN
SuexecUserGroup gitolite3:gitolite3
ScriptAlias /git /var/www/git/gitolite-suexec-wrapper.sh
<Location /git>
Order allow,deny
Allow from all
</Location>
===============================================================================
CAはオレオレCAで良い。SSLUserName設定はクライアント証明書のCNをユーザー名として扱うことの宣言。
環境変数REMOTE_USERもこれによって証明書CNに置き換わる。
■Gitolite3準備
次にGitolite3側の準備
・リポジトリアクセス権設定
Gitolite3のインストールによってgitolite-admin リポジトリが自動で生成されているはず。
まずはこれをローカルでclone する。そして conf/gitolite.conf を編集する。
例えばtesting リポジトリの設定が以下のようになっていたら
repo testing
RW+ = @all
↓
repo testing
RW+ = @all
R = daemon
というようにdaemonユーザーに対してRead権限を付与する。こうしないとApacheからGitolite3管理のリポジトリが読み出せない。Apacheからアクセスしたい全てのリポジトリにR = daemonを付与する。
変更したらcommit, push して反映
また当然であるが、クライアント証明書のCNと同じ名前のアクセス権限がリポジトリに設定されている必要がある。例えば、developというメンバーがクライアント認証でアクセスする場合にはtesting リポジトリの例で言うと
repo testing
RW = develop
R = daemon
とする。このときtestingリポジトリにApacheからはクライアント証明書のCNがdevelopでないとリポジトリにアクセスできない。
■クライアント側設定
・git設定ファイルの変更
(Linux)
~/.gitconfig
(Windows)
C:/Users/<ユーザー名>/.gitconfig
以下の設定を追記する
===============================================================================
[http]
sslCert = <クライアント証明書ファイルパス>
sslKey = <クライアント秘密鍵ファイルパス>
sslCaInfo = <CA証明書ファイルパス>
sslVerify = false
===============================================================================
最後のsslVefiry = false はオレオレCAの場合に必要。ちゃんと認証機関からCA証明書を取得しているなら不要。
■実行
以上の設定が完了していれば以下のコマンドでリポジトリの取得が可能なはず。
git clone https://<ドメイン名>/git/<リポジトリ名>
自分で立てたgitサーバーに対してhttps プロトコルでクライアント認証アクセスする
■インストール
Apache2はインストール済みとする
・Gitolite3インストール
apt-get install gitolite3
インストール中に管理者の公開鍵パスを要求されるので適当にSSHログインできる公開鍵を指定する
→これは後で変更も可能なので適当でOK
インストールが完了するとGitolite3のファイル群は /usr/share/gitolite3
環境は /var/lib/gitolite3 に作成される。
■Apache2準備
まずはApache2の準備
・ apache-suexec-custom のインストール
apt-get install apache-suexec-custom
a2enmod suexec
・mod_cgid 有効化
a2enmod cgid
・gitolite ラッパースクリプト用意
DocumentRoot が /var/www だとしたら /var/www/git というフォルダを作成する。
ここにスクリプトを追加する。 gitolite-suexec-wrapper.sh とする。
→スクリプトを置くフォルダは/var/www/git でなくても良いが、DocumentRootで指定したフォルダのサブフォルダでないとsuexecがスクリプトを実行できないので注意
(gitolite-suexec-wrapper.sh)
===============================================================================
#!/bin/bash
export GIT_PROJECT_ROOT="/var/lib/gitolite3/repositories"
export GITOLITE_HTTP_HOME="var/lib/gitolite3"
exec /usr/share/gitolite3/gitolite-shell
===============================================================================
chown gitolite3:gitolite3 gitolite-suexec-wrapper.sh
chmod +x /var/gitolite/gitolite-suexec-wrapper.sh
として所有者、実行権限を変更する。
・SSLクライアント認証設定
VirtualHost の設定に以下を追加
===============================================================================
SSLEngine on
SSLCertificateFile <サーバー証明書のパス>
SSLCertificateKeyFile <サーバ秘密鍵のパス>
SSLCACertficateFile <CA証明書のパス>
SSLVerifyClient require
SSLUserName SSL_CLIENT_S_DN_CN
SuexecUserGroup gitolite3:gitolite3
ScriptAlias /git /var/www/git/gitolite-suexec-wrapper.sh
<Location /git>
Order allow,deny
Allow from all
</Location>
===============================================================================
CAはオレオレCAで良い。SSLUserName設定はクライアント証明書のCNをユーザー名として扱うことの宣言。
環境変数REMOTE_USERもこれによって証明書CNに置き換わる。
■Gitolite3準備
次にGitolite3側の準備
・リポジトリアクセス権設定
Gitolite3のインストールによってgitolite-admin リポジトリが自動で生成されているはず。
まずはこれをローカルでclone する。そして conf/gitolite.conf を編集する。
例えばtesting リポジトリの設定が以下のようになっていたら
repo testing
RW+ = @all
↓
repo testing
RW+ = @all
R = daemon
というようにdaemonユーザーに対してRead権限を付与する。こうしないとApacheからGitolite3管理のリポジトリが読み出せない。Apacheからアクセスしたい全てのリポジトリにR = daemonを付与する。
変更したらcommit, push して反映
また当然であるが、クライアント証明書のCNと同じ名前のアクセス権限がリポジトリに設定されている必要がある。例えば、developというメンバーがクライアント認証でアクセスする場合にはtesting リポジトリの例で言うと
repo testing
RW = develop
R = daemon
とする。このときtestingリポジトリにApacheからはクライアント証明書のCNがdevelopでないとリポジトリにアクセスできない。
■クライアント側設定
・git設定ファイルの変更
(Linux)
~/.gitconfig
(Windows)
C:/Users/<ユーザー名>/.gitconfig
以下の設定を追記する
===============================================================================
[http]
sslCert = <クライアント証明書ファイルパス>
sslKey = <クライアント秘密鍵ファイルパス>
sslCaInfo = <CA証明書ファイルパス>
sslVerify = false
===============================================================================
最後のsslVefiry = false はオレオレCAの場合に必要。ちゃんと認証機関からCA証明書を取得しているなら不要。
■実行
以上の設定が完了していれば以下のコマンドでリポジトリの取得が可能なはず。
git clone https://<ドメイン名>/git/<リポジトリ名>
登録:
投稿 (Atom)