gitlab安装后出现了默认的证书无效的问题(这可能是安装过程中发生错误导致的),这使得chrome
无法向指定的站点发起请求。
可以通过以下两种方式来解决。
临时解决方案
如果你使用的是chrome
浏览器,则可以在发生错误的页面上任意点击左键,然后在键盘上输入thisisunsafe
,此时便会打开网站。
注意:这并不一个好的方法。开启该选项后,所有的https的证书验证都将失效。如果你只是临时用一用,用完后需要重新启动浏览器,并点击链接左侧的安全设置后点击:启用安全报告。
永久解决方案
永久的方案当然是更新证书,免费的证书的申请方式有很多,在此不阐述。比如我是由阿里云申请的,在下载的列表中会有很多项,比如:iss\apache\tomcat\nginx等。接着我们下载对应的私钥文件及数字签名证书即可。
比如我们下载apache
对应的key
文件以及crt
文件。其中:
key
文件则是服务器用到的私钥,这个文件只能服务器用,不能扩散。crt
文件在用户访问时,同返回的内容一并返回给用户。
有了这两个文件,就有了https
加密传输的基础。可以这么简单来理解:
key
文件是服务器用来加密、解密的。crt
文件是客户用来加密、解密的。
我们将上述两个文件下载后,对应替换gitlab
的证书配置文件即可,位置是:/etc/gitlab/ssl
,步骤如下:
- 备份原
key
、crt
文件。 - 将下载到的
key
、crt
文件改为原key
、crt
文件. - 执行:
sudo gitlab-ctl restart
此时,再次访问gitlab
的站点便可以顺利打开了。
加密传输
在加密领域,有两种基本的典型的加密解密算法:
- 第一种是加密和解密的密钥相同的
AES
算法。该算法的优点是加密、解密速度快。缺点是加密与解密密钥相同。我们又把这种算法称为对称加密算法。 - 第二种是加密和解密的密钥不相同的
RSA
算法。简单来讲就是用123
加密的内容需要用456
来解密,而用456
加密的内容则需要使用123
来解密。该算法的优点是保密性强,缺点是加密解密速度慢。我们把这种加密与解密的密钥不相同的算法又称为非对称算法。
而https
则聪明地结合了两种算法(其实前阵子那个流行的勒索病毒
也是结合了AES和RSA)。
- 在数据加密解密过程中使用
AES
算法。 - 在传输
AES
算法使用的密钥时使用RSA
算法。
在RSA
算法中,我们把保留的那个密钥称为私钥
,该密码仅被签发者掌握;而把那个用来发送给别人的密钥称为公钥
,公钥可以被任意多的用户掌握。而且一个私钥可以对应无限多个公钥。
如果你对AES
和RSA
算法还不是太了解,请先学习这两种算法的基础。
同时为了防止数据在中途被劫持,发生替换的风险,https
传输又引入了根证书签发机构。最后它整体的传输过程大概是这样的:
- 服务端向 CA 签发机构来申请证书。
- CA 将加密后的公钥以及未加密的私钥给服务端。
- 客户端进行加密请求(以https:打头请求站点)
- 服务端返回CA 签发的公钥
- 客户端检查 CA 签发的公钥的有效性。
- 客户端通过 CA 签发的公钥来获取服务器端的公钥
- 客户端随机生一个
AES
密钥,并将AES
密钥通过服务端公钥进行加密后传递给服务端 - 服务端通过私钥对客户端传入的加密后的数据进行解密,然后得到
AES
密钥 - 客户端与服务端使用共同的
AES
密钥进行快乐、快速的通讯。
简单画个图,大概长这样:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。