当我偶然发现加密时,我开始查看ssl证书,并且我想将它与gitlab一起使用,但是它正在运行在树莓派2上并且它现在运行得非常完美(所以我不想弄乱任何东西) ),他会不会正确安装一个let encrypt ssl证书?PS:我的安装是综合的
我现在能够找到的迄今为止最好的解决方案在本博文中有所描述.我不会背诵任何内容,但关键点是:
使用webroot
身份验证器进行Let's Encrypt
创建文件夹/var/www/letsencrypt
并使用此目录和webroot-path
Let的加密
更改以下配置值/etc/gitlab/gitlab.rb
并在gitlab-ctl reconfigure
之后运行:
nginx['redirect_http_to_https'] = true nginx['ssl_certificate']= "/etc/letsencrypt/live/gitlab.yourdomain.com/fullchain.pem" nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.yourdomain.com/privkey.pem" nginx['custom_gitlab_server_config']="location ^~ /.well-known {\n alias /var/www/letsencrypt/.well-known;\n}\n"
如果您使用的是Omnibus软件包附带的Mattermost,那么您还可以在/etc/gitlab/gitlab.rb
以下位置设置以下选项:
mattermost_nginx['redirect_http_to_https'] = true mattermost_nginx['ssl_certificate']= "/etc/letsencrypt/live/gitlab.yourdomain.com/fullchain.pem" mattermost_nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.yourdomain.com/privkey.pem" mattermost_nginx['custom_gitlab_mattermost_server_config']="location ^~ /.well-known {\n alias /var/www/letsencrypt/.well-known;\n}\n"
请求您的第一个证书后,请记住更改external_url
为https://...
并再次运行gitlab-ctl reconfigure
这种方法非常优雅,因为它只是/var/www/letsencrypt/.well-known
通过自定义Nginx配置将Let的加密验证器使用的目录安装到Gitlab web-root中,并且在Gitlab运行时始终可以进行身份验证.这意味着您可以自动续订Let的加密证书.
我不知道Raspberry Pi上的安装是否有所不同.让加密安装过程做一些我不知道的魔术.
输入grep 'external_url' /etc/gitlab/gitlab.rb
以检查网站名称.作为一个例子的https:// gitlab.example.com:50000
如果您的外部网址没有开头https
,请将其更改为开头https
粗体部分将是您的
按照此链接上的Let's Encrypt安装说明操作:https://letsencrypt.org/howitworks/
我没有复制说明,因为它们可能会改变(因为该程序现在处于公开测试阶段).您必须运行的内容取决于您是否也在Apache上运行要为其生成Let的加密证书的网站.
生成Let的加密证书后,它们就位于 /etc/letsencrypt/live/
Gitlab预计会有两个文件 /etc/gitlab/ssl/
有些东西我不确定,您可能需要使用此位置的答案转换.pem证书:将.pem转换为.crt和.key
将证书复制/etc/letsencrypt/live/
到/etc/gitlab/ssl/
将私钥复制/etc/letsencrypt/live/
到/etc/gitlab/ssl/
跑 gitlab-ctl reconfigure
根据您的基础架构设置有两种方式(Raspi,大型云服务器或介于两者之间):
如果您有一个可从外部访问的服务器(意味着您的Gitlab主机可以从Let's Encrypt服务器调用,这是Let's Encrypt的自动机制,验证您"拥有"某个域,如gitlab.yoursite.com
相应的DNS和DNS解析的服务器/主机)所需要的唯一的事情(从Gitlab版本10.7上)是一个加小号到HTTP你Gitlab URL配置/etc/gitlab/gitlab.rb
(如marcolz已经提到):
external_url 'https://gitlab.yoursite.com'
来自https://docs.gitlab.com/omnibus/settings/ssl.html#let-39-s-encrypt-integration中的文档:
Omnibus-gitlab可以自动从Let's Encrypt中获取和续订证书.
如果您的Gitlab主机不能通过Let's Encrypt服务器从外部访问,那么整个过程就更难了!然后你会离开让Gitlab Omnibus为你做繁重的自动方式.你现在肯定需要自己获取Let's加密证书!有一些方法可以在不需要外部访问服务器的情况下获取通过加密证书.
我选择并建议使用的另一种方法是使用与dns-lexicon一起脱水的备用Let's Encrypt客户端,与2016年在某处引入的Let's Encrypt一起完全自动化获取证书的过程.这是唯一的方法,你不需要一个外部可访问的服务器 - 但你再次需要"拥有"某个域,如AND和你需要API访问DNS提供商,DNS提供商托管你的域(这里是支持的DNS提供商列表在那种情况下).dns-challenge
gitlab.yoursite.com
由于整个过程非常复杂,我创建了一个完全易于理解的Ansible playbook prepare-gitlab.yml,其中Gitlab安装Omnibus的每一步都是为你处理的(完整的GitHub源代码可以在这里找到:https://github.com/jonashackt/ gitlab-ci-stack).
如果您只想创建EUROP加密证书,请查看gets-letsencrypt-certs-dehydrated-lexicon.yml - 即使您不想使用Ansible,也可以手动重现控制台上的每一步或使用其他自动化工具,如Chef或Saltstack(虽然我不能亲自推荐).另一种方法是从词典中查看这个伟大的博客文章:https://blog.thesparktree.com/generating-intranet-and-private-network-ssl,从我基本上开发的剧本中描述的步骤开始.
无论您选择哪种方式,都不要忘记复制手动(或自动)提取的Let's加密证书
/srv/dehydrated/certs/{{ gitlab_domain }}/fullchain.pem
至
/etc/gitlab/ssl/{{ gitlab_domain }}.crt
和
/srv/dehydrated/certs/{{ gitlab_domain }}/privkey.pem
至
/etc/gitlab/ssl/{{ gitlab_domain }}.key
Gitlab会自动为您提取它们,因为文档说明了手动配置HTTPS的方式