![見出し画像](https://assets.st-note.com/production/uploads/images/116972713/rectangle_large_type_2_c39535142f849c260d9baac865cc158c.png?width=1200)
CentOSでhttpsアクセスのGitサーバー構築
GitをSVNのようなファイル管理システムと思い込んでいるエンドユーザーから「Gitサーバー」を立てて欲しいと言われました。
そもそも、Gitはすべてがサーバーみたいなものなんですけど。
しかし、Git自体にはネットに公開する機能はなく、httpやsshなどを使って外部から接続できるようにしなればなりません。
今回は、社内、若しくはIPアドレス制限での接続のみであるため、認証のセキュリティが甘い(ユーザー名、パスワードのみの認証)がユーザーが利用し易いhttpsで、リモートリポジトリに接続できるようなサーバーを構築します。
■OSインストール
CentOS 7.8
Webサーバーとしてインストール
+開発ツール
+システム管理ツール
起動後に
・firewalldの無効化(# systemctl disable firewalld)
・selinuxの無効化(/etc/selinux/configの編集)
を行います。
■Gitインストール
# yum install git
■SSL化
# yum install mod_ssl
# openssl genrsa -aes128 2048 > server.key
pass phraseを設定します
# openssl rsa -in server.key -out server.key
pass phraseを入力します
# openssl req -new -key server.key > server.csr
自己証明書に会社名などを設定します
内容は任意で構いません
# openssl x509 -req -days 3650 -signkey server.key < server.csr > server.crt
作成した証明書をApacheの設定フォルダの下に配置します
# mkdir /etc/httpd/ssl/
# cp server.key server.crt /etc/httpd/ssl/
# chmod 400 /etc/httpd/ssl/server.*
証明書を設定
# cp -p /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bk
# vi /etc/httpd/conf.d/ssl.conf
→以下を変更
SSLCertificateFile /etc/httpd/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/ssl/server.key
Apacheでhttpsアクセスできるようにします
(新規作成)
# vi /etc/httpd/conf.d/rewrite.conf
<ifModule mod_rewrite.c>
RewriteEngine On
LogLevel crit rewrite:trace3
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</ifModule>
再起動
# systemctl restart httpd
これで、httpsでアクセスできるようになりました
■Gitリポジトリ作成
/home/git/gittestにリポジトリを作成します
# cd /home
# mkdir git
# cd git
# git init --bare gittest
# chown -R apache:apache gittest/
公開設定
# cd gittest
# git --bare update-server-info
■Apache設定
WebDAVを使って認証できるようにします
(新規作成)
#vi /etc/httpd/conf.d/git.conf
<Location /gittest>
DAV on
SSLRequireSSL
AuthType Basic
AuthName "Git Repository"
AuthUserFile /home/git/conf/authuser
Require valid-user
</Location>
WebDAVを使うために以下を追記します
# vi /etc/httpd/conf/httpd.conf
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
Gitリポジトリへのパスを設定します。
<VirtualHost default:443>内に以下を追記
# vi /etc/httpd/conf.d/ssl.conf
DocumentRoot "/home/git"
<Directory "/home/git/gittest">
Options All
AllowOverride All
</Directory>
■ユーザー作成(認証ファイルの作成)
# htpasswd -c /home/git/conf/authuser sano
(最初だけ-cオプションが必要、以降、追記の場合は-cなし)
■リポジトリURL
ネットからのアクセスURLは以下になります
https://ユーザー名:パスワード@IPアドレス/リポジトリ名
例:https://sano:sanopass@192.168.1.100/gittest
IPアドレスはFQDNの方が望ましいです
また、証明書が自己作成のため、接続するクライアント側で
sslVerify
を無効化しておかないとSSLのエラーとなって接続できません
この記事が気に入ったらサポートをしてみませんか?