秦始皇二一四
停止思考是一种堕落

Gitlab ee 学习版使用与无限试用

Gitlab 类似于 Github,Github 自建服务器版非常昂贵,可以在此查看价格:https://github.com/pricing#feature-comparison

而 Gitlab 有社区版 (ce) 即开源的可供自建的服务器,免费!使用心得可以参见之前的文章:点击此处

其实,Gitlab 还有个与 ce 相比功能更丰富的 ee 版本 (企业版),但是价格并不算便宜,https://about.gitlab.com/pricing/#self-managed,Gitlab 的各版本功能差异:https://about.gitlab.com/pricing/self-managed/feature-comparison/

Gitlab ee 提供全功能试用版,通过搜索,发现了 Gitlab ee 学习版的实现机制,这里有几个网址可供参考:

https://www.v2ex.com/t/500107

https://www.rubydoc.info/gems/gitlab-license/1.0.0/file/README.md

https://github.com/hadesy/gitlab-license/blob/master/License.php

这里做个更为具体的笔记,也是笔者实际的体验结果:

 

1、首先可以按照 https://blog.csdn.net/hanhuili/article/details/80921799 生成自己的公钥、私钥,这里给出详细步骤:

笔者使用的是 xampp,同时 openssl 已加入系统 path 中,可以直接在 xampp 下的任意一个 web 目录里,通过 shell 命令行输入以下内容,进行公钥密钥生成。

私钥:

openssl genrsa -out rsakey0.pem 2048

P.S:根据 https://www.rubydoc.info/gems/gitlab-license/1.0.0/file/README.md 需要实施 2048 加密规格。

然后根据自己的私钥生成公钥:

openssl rsa -in rsakey0.pem -pubout -out rsakey0-pub.pem

2、将脚本 https://github.com/hadesy/gitlab-license/blob/master/License.php 下载下来,放到本地的 web 服务器里,这里给出 https://github.com/hadesy/gitlab-license/commit/4197dc9e47dc8007328ee161b9ecb49c6ab3235d 的原文:

<?php
class License
{
    const GITLAB_PUBLIC_KEY = '-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Hxv3MkkZbMrKtIs6np9
ccP4OwGBkNhIvhPjcQP48hbbascv5RqsOquQGrYSD2ZrE/kbkRdkIcoHEeTZLif+
bDKFZFI7o5x0H92o9/GSvxHJhQ8mkmvwxD7lssGShwZEm8WG+U7BZqUV/gGmCDqe
9W8H8Fq2B0ck8IXjbQ4Zz+JlyV/NHZTZcs69plFiLKh4N6GYVftOVwSomh0bbypP
OB9WnLC7RC9a2LRrhtf8sqa2rRFmtyMMfgFFzLMzS+w+1K4+QLnWP1gKQVzaFnzk
pnwKPrqbGFYbRztIVEWbs8jPYlLkGb8ME4C84YVtQgbQcbyisU/VW3wUGkhT+J0k
xwIDAQAB
-----END PUBLIC KEY-----';
    const YOUR_PUBLIC_KEY = '----';
    const YOUR_PRIVATE_KEY = '----';
    /**
     * @param string $license
     * @return string
     */
    public static function decrypt(string $license)
    {
        $json_data = base64_decode($license);
        $encryption_data = json_decode($json_data, true);
        $encrypted_data = base64_decode($encryption_data["data"]);
        $encrypted_key = base64_decode($encryption_data["key"]);
        $aes_iv = base64_decode($encryption_data["iv"]);
        openssl_public_decrypt($encrypted_key, $aes_key, openssl_pkey_get_public(self::GITLAB_PUBLIC_KEY));
        $data = openssl_decrypt(
            $encrypted_data,
            'aes-128-cbc',
            $aes_key,
            OPENSSL_RAW_DATA,
            $aes_iv
        );
        return $data;
    }
    /**
     * @param array $license
     * @return string
     * @throws Exception
     */
    public static function encrypt(array $license)
    {
        $encryption_data = json_encode($license);
        $key = random_bytes(16);
        $ivLength = openssl_cipher_iv_length('aes-128-cbc');
        $iv = openssl_random_pseudo_bytes($ivLength, $isStrong);
        $data = openssl_encrypt(
            $encryption_data,
            'aes-128-cbc',
            $key,
            OPENSSL_RAW_DATA,
            $iv
        );
        openssl_private_encrypt($key, $encrypted, openssl_pkey_get_private(self::YOUR_PRIVATE_KEY));
        return base64_encode(json_encode([
            "data" => base64_encode($data),
            'key' => base64_encode($encrypted),
            'iv' => base64_encode($iv)
        ]));
    }
}

其中的 YOUR_PUBLIC_KEY 和 YOUR_PRIVATE_KEY 需要填充为自己刚才在第一步时生成的证书内容,证书内容可以通过使用 notepad++等工具打开查看到内容。

3、在 web 服务器上进行签发自己的 gitlab 证书,github 仓库里给出了方法,这里抄了过来,可以根据自己的实际需要修改 license 证书里的内容,例如 name、email、company 等,但请保持结构:

$license = [
    'version' => 1,
    'licensee' => [
        'Name' => 'custom',
        'Email' => 'custom@custom.com',
        'Company' => 'custom'
    ],
    'issued_at' => '2019-01-01',
    'expires_at' => '2030-01-01',
    'notify_admins_at' => '2030-01-01',
    'notify_users_at' => '2030-01-01',
    'restrictions' => [
        'id' => 99999,
        'previous_user_count' => null,
        'trueup_quantity' => null,
        'trueup_from' => null,
        'trueup_to' => null,
        'active_user_count' => 10000,
        'add_ons' => [],
        'subscription_id' => null,
        'plan' => 'ultimate',
        'trial' => 0
    ]
];

$license = License::encrypt($license);

4、一般需要直接 echo 打印出上面的 $license 结果,即签发的最终 gitlab 证书。

5、根据 https://about.gitlab.com/upgrade/#ubuntu 说明,从 ce 升级到 ee,建议添加清华大学镜像源,原 ce 的镜像可以留着,因为当升级为 ee 时会自动卸载 ce 且之后更新只会从 ee 更新,另外,其实现在的 ee 没有证书时就是 ce,如果有证书就是 ee,证书到期如果不删除证书还会是 ee,但是是功能限制版。

6、将自己签发的公钥替换 gitlab 的目录,位于/opt/gitlab/embedded/service/gitlab-rails/.license_encryption_key.pub

7、使用 sudo gitlab-ctl reconfigure 重建 gitlab,然后使用 sudo gitlab-ctl restart 重启 gitlab,访问后台管理-证书-复制自己在第 4 步签发的证书,即可激活所有服务,并使用最高的 ee 版本全部功能。

8、请备份原证书文件和自己的公钥文件,即第 6 步,自己覆盖的证书和原版证书,当版本更新后要重新覆盖公钥证书并重建 gitlab 和重启 gitlab,即需要重复第 6、7 步,但不需要再在 gitlab 后台上传证书。

截止到 2019 年 5 月,暂时没有从代码中发现其他暗桩或额外验证模式,似乎仅需要替换公钥证书即可,可以说学习版的实现离不开官方的放一马,因为这比想象中的要容易,建议学习版还是低调使用,仅作学习。

以上方式仅供学习参考,请勿用于商业或非法用途。另外,因版本升级或官方变更策略等,导致数据永久丢失,本文作者概不负责;使用 ee,请遵守相关协议,为所有需要的用户购买许可证。

 

以上是通过 php 的方式解决,下面给出另外一种方式供大家参考:

https://blog.starudream.cn/2020/01/19/6-crack-gitlab/

 

赞 (3) 打赏
版权声明:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 (CC BY-NC-SA 4.0) 进行授权
文章名称:《Gitlab ee 学习版使用与无限试用》
文章链接:https://www.qyh.name/316/gitlab-ee%e5%ad%a6%e4%b9%a0%e7%89%88%e4%bd%bf%e7%94%a8%e4%b8%8e%e6%97%a0%e9%99%90%e8%af%95%e7%94%a8/
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。

觉得文章有用就打赏一下

非常感谢你的打赏,我们将继续努力提供更多优质内容,让我们一起创建更加美好的网络世界!(注意:私密文章打赏不代表可以获得查看权限)

支付宝扫一扫

微信扫一扫