- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
在安装之前,笔者在这里先声明一下,我安装bitwarden使用的操作环境为ArchLinux,我的想法是,因为这只是一个“密码本”,并且最好能保证其能够在开机后占用尽量少的内存让密码本保持稳定运行。在此前提下,我选择了干净整洁的ArchLinux,关于其安装,大家可以看一下网上现有的教程,或者也可以看一下我的另一篇文章,https://www.cnblogs.com/Thato/articles/18309473 。
Arch的安装不能说简单,但是也绝对说不上很难。关于完全安装完毕后的占用,我压到了350MB的运行内存占用,如下图,可以说是占用十分的少了 。
如果你不喜欢用或者不用Arch,也没有关系,本篇文章主要的分享目的是自签SSL证书使用https服务的流程,因为bitwarden强制要求运行在此环境下以保证密码安全,而自签既能剩下一笔资金,也能保证我们能够使用安全的bitwarden服务 。
那么接下来,是我们安装bitwarden要用到的软件 。
docker的安装我们可以直接使用 。
pacman -S docker
来安装,如下:
此时按下回车确认安装即可;当安装完毕后,我们可以再使用命令开启docker的守护进程并且设置开机自启 。
systemctl enable --now docker
当出现如上提示时,docker就启动完毕且添加开机自启了;检查一下docker服务是否正常,运行命令 。
docker version
当docker如上显示出Client和Server的信息后,说明docker安装设置完毕.
对于Arch来说,docker-compose可以直接使用pacman来安装,运行命令 。
pacman -S docker-compose
安装完成后执行命令 。
docker-compose version
当能够成功返回版本信息时,说明docker-compose也安装完毕了 。
我这里使用了一个第三方的bitwarden的docker镜像,听别人说有解锁一些专业版的东西,这里就拿来用了.
由于各种各样的原因,我们直接使用官方拉取镜像的时候多半情况不是很慢就是连接不上,为了解决这个问题,我这里给出一个可行的解决方案:调用物理机的代理程序 。
草图大致如上,我的天,好丑,哈哈哈哈。将就看一下,大致就是这个意思.
那么我们如何实现呢?
首先找到代理程序上关于“允许局域网连接”的选项,这里给出小猫和小V的示意图,大家可以任选一个软件去用,当然,有自己的用自己的也行,只要允许局域网连接即可.
随后记住端口号,这里我就用小猫了,记住端口号7890 。
之后打开VM,和控制面板,结合看一下NAT模式的网卡地址 。
可以看到我这里是192.168.131.1,那么结合刚才的端口号和网卡的地址。我们要访问的代理地址就是192.168.131.1:7890;访问192.168.131.1:7890即可映射到物理机的7890端口使用代理,这里各位根据自己的实际情况去更改即可.
拿到代理地址之后,配置docker,使其走代理,依次运行命令 。
mkdir -p /etc/systemd/system/docker.service.d
touch /etc/systemd/system/docker.service.d/http-proxy.conf
vim /etc/systemd/system/docker.service.d/http-proxy.conf
在vim编辑的文件中添加如下条目 。
[Service]
Environment="HTTP_PROXY=http://192.168.131.1:7890/"
Environment="HTTPS_PROXY=http:// 192.168.131.1:7890/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
保存后重启docker 。
systemctl daemon-reload
systemctl restart docker
此时docker加速就配置完成了,接下来我们来拉取镜像 。
运行命令 。
docker pull bitwardenrs/server:latest
拉取大佬用rust写好的bitwarden docker镜像 。
可以看到主机侧代理成功获取到了请求,并且docker已经开始使用主机侧代理拉取镜像了,此时我们等待镜像拉取完毕即可,镜像拉取过程的速度因网络状态而异.
当出现如上提示信息时,说明成功拉取完毕了镜像。随后我们来起一下容器,运行命令 。
docker run -d --name bitwarden -v /bw-data/:/data/ -p 8080:80 -e WEBSOCKET_ENABLED=true -p 3012:3012 -e DOMAIN=https://passwordserver.com bitwardenrs/server:latest
当出现如上提示时,我们的容器就启动完成了,使用命令 。
docker ps -a 。
看一下创建好的容器 。
如上,如果STATUS栏中如果显示Up xxxx seconds (health: starting)或者是Up xxx miniuts (health: starting)之类的时间信息,就没有问题.
//我之前使用CentOS 7安装,容器一启动STATUS状态就会秒Exit,有解决的同志们可以踹我一脚,我学习一下,感谢.
注意:此时bitwarden服务并不可用,只是检查是否能够正常访问 。
随后我们去访问一下web页面,看看是否有异常;访问之前需要知道我们的虚拟机ip地址。这里可以安装一个net-tools,运行命令 。
pacman -S net-tools #当然,你也可以使用ip a命令来查看ip地址
安装完成之后就可以使用ifconfig了,我们使用ifconfig来看一下ip地址 。
可以看到我的ip地址是192.168.131.151,并且启容器的时候我们是把docker的80端口映射到了Arch的8080端口上,所以这里我们要访问的地址就是 。
http://192.168.131.151:8080 。
尝试访问 。
可以发现我们的bitwarden服务已经搭出来了 。
但是,请注意!正如我本小节开头所说,此时服务并不可用,因为bitwarden要求强制使用https才能够进行操作,如下 。
很多同志可能就是卡在这一步了,上网搜索SSL证书的获取,大都是关于“先注册域名然后就可以免费申请一个SSL证书”之类的回答;但是注册域名也不是免费的,为了解决这个问题,我们可以自签一个SSL证书出来,随后就可以使用bitwarden的服务了.
关于自签SSL证书,你必须要知道的几点:
1. 完全免费,证书时长完全自定义 。
2. 完全能够保证bitwarden可用,即自签证书能够运行https服务 。
3. 自签证书不属于“受信证书”,如果你是公网服务,请老老实实注册域名使用受信证书 。
4. 浏览器会报一个警告,由于不是受信证书,但是我们服务可用就行了,这个不用管;所谓的“不安全”并不是你的密码不安全,web信息传输过程中是会加密的,如下图,我使用自己已经搭建好的另一台bitwarden密码服务器做示例 。
可以看到数据都是经过TLS加密的,而浏览器提示不安全仅仅是因为你的证书是自签而不是经过权威机构认证的证书,关于安全性这点,请放心.
这里我们需要两个软件,一个是openssl,一个是jdk11,使用如下命令安装 。
pacman -S openssl
这里你可以休息一下,喝杯茶或者咖啡,起身运动一下,眺望一下远处,等到下载完毕后再继续安装操作 * * * * * * * * * * * 休息和安装完毕了吗?我们继续 。
安装完毕后,我们来继续操作(自签证书的生成参考了文章:https://cloud.tencent.com/developer/article/1558378) 。
首先来生成一个RSA私钥文件,使用命令:
openssl genrsa -des3 -out server.pass.key 2048
运行之后会要求输入一个密码,这里输入一下,会有一次密码输入和一次密码验证.
此密码后续操作中会多次用到,请记好,如果不慎遗忘,请从这步开始重新生成私钥 。
私钥生成完毕后,我们需要将其中的密码信息去除,让文件中不包含明文密码,执行命令 。
openssl rsa -in server.pass.key -out server.key
此过程中会让我们输入一次密码,就是刚才的密码,生成的无密码私钥为server.key 。
无密码私钥创建完毕之后,我们来生成一个CSR(证书签名请求),执行如下命令 。
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Hello/L=Guys/O=Like/OU=AndSubscribe/CN=Me.Thank.you.com"
其中,/C=xxx表示的是国家,这里/C=CN即国家是CN;/ST表示省份;/L表示城市;/O表示组织或企业;/OU表示部门;/CN表示域名或IP。这些内容可以完全自定义,些什么都可以,注意不要使用特殊字符 。
可以看到生成了server.csr,随后我们继续操作,开始自签名操作,运行命令 。
openssl x509 -req -days 36500 -in server.csr -signkey server.key -out server.crt
其中比较重要的参数是days,这个是证书的有效时间,这里我们既然是自签证书,可以狠心一点,直接签个100年的出来.
可以看到成功输出了crt,自签完成。随后我们把这个证书放到ssl目录中,依次运行如下命令 。
mkdir -p /usr/local/ssl
cp server.key /usr/local/ssl/
cp server.crt /usr/local/ssl/
移动完成之后我们来继续操作,配置Nginx 。
现在我们有了证书了,该如何使用呢?难不成进到容器里面替换吗 。
其实完全不用,我们只要配置Nginx设置反向代理即可 。
首先来安装Nginx,使用命令 。
pacman -S nginx
安装完毕后运行如下命令 。
systemctl enable --now nginx
此处我们Nginx就配置完成了,随后我们来设置反向代理 。
修改配置文件/etc/nginx/nginx.conf,运行命令 。
vim /etc/nginx/nginx.conf
在其中修改如下内容(注意,一定要在规定的地方去改) 。
在http中添加:
types_hash_max_size 4096;
将sever中的内容修改为(Server中error_page上面相关的参数项全部移除即可):
listen 80;
server_name passwordsever.com;
# Allow large attachments
client_max_body_size 128M;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
}
location /notifications/hub {
proxy_pass http://localhost:3012;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection "upgrade";
}
location /notifications/hub/negotiate {
proxy_pass http://localhost:8080;
}
listen 443 ssl;
ssl_certificate /usr/local/ssl/server.crt;
ssl_certificate_key /usr/local/ssl/server.key;
配置完成之后保存文件,随后依次运行下面的命令 。
nginx -t
nginx -c /etc/nginx/nginx.conf
nginx -s reload
此时就配置完成了 。
我们来试试访问我们的bitwarden,此时我们已经配置好了https,此时访问https://xxx.xxx.xxx.xxx(你的服务器ip地址)即可 。
浏览器爆如上错误直接继续访问,此处的“不安全”原因上面已经强调过,不再赘述 。
可以看到此时成功进入网页了,那么我们开始使用吧.
创建一个新账户,点击创建账号 。
这里根据提示填写即可,主密码就是登录进bitwarden的密码,请一定牢记账号和密码 。
注册完毕即可登录 。
此时,你的bitwarden就搭建完毕了,关于bitwarden的使用,大家可以自行探索.
恭喜你走到了这一步! 。
最后此篇关于bitwarden本地搭建(无需购买SSL证书)的文章就讲到这里了,如果你想了解更多关于bitwarden本地搭建(无需购买SSL证书)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 6年前关闭。 Improve t
我们有一个专有的销售系统,我们已经使用了一段时间了。最近我们添加了“购买”方面,以便我们可以比较匹配产品的平均购买/销售价格以及查看库存状况。 在 MySQL 中,我有 2 个表:tblPurchas
在查看 Paypal 文档以寻找针对这种情况的解决方案后,我一头雾水。我想要的是一种让购物车订阅(定期付款)和购买商品的方法。有没有一种方法可以解决这个问题,或者我是否必须做一些自定义的事情(如果我使
我想知道是否可以使用youtube api获取可购买或可租借的电影列表。当我转到youtube网站并登录到Google帐户时,我可以看到要购买的电影及其价格。 我想在我的应用程序(http://www
我使用 JavaScript 购买 SDK 和 Node.js。 const fetch = require('node-fetch'); const shopify = require('shopi
我购买了三个不同期限的不同订阅。我已经配置了测试账户,我可以进行测试购买。对于这些购买,谷歌不向我收费,但它们看起来非常像真实的。购买成功后,应用内结算会向我发送一些有关我的购买的数据,例如 pack
我目前正在实现应用内购买,并且刚刚阅读了一些帖子,说需要恢复购买按钮,否则苹果将拒绝应用。 我不想在我的 UI 设计中添加第二个按钮。 所以我的问题是... 有没有办法检查用户之前是否进行过应用内购买
我的应用中有多个项目。我有两个设备。如果我在这些设备中的第一个上购买商品,然后尝试在另一个设备上购买相同的商品,我不能。(Google play intent 显示消息 - 商品已拥有!然后它崩溃了.
有没有办法检测何时通过应用商店为您的应用进行了购买? 检测应用内购买似乎很容易(即我们的服务器可以收到通知),但是对于直接购买有没有办法做到这一点? 如果没有,是否有一些用户的唯一标识符(例如购买时通
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我计划在用户使用该应用程序成功扫描二维码时为应用内购买提供折扣。我知道无法为现有商品提供折扣。我打算以折扣价添加另一件商品。有没有人以前有过使用这种方法的经验? 提前致谢 最佳答案 没有办法直接这样做
我很好奇其他商店在基础应用程序框架方面做了什么?我将应用程序框架视为能够提供额外或扩展的功能以提高基于它构建的应用程序的质量。 有各种开箱即用的框架,例如 Spring(或 Spring.NET)等。
我们正在开发一款使用非续订订阅 IAP 模型的应用。在沙盒中测试订阅购买流程时,我们看到弹出两 strip 有“购买”按钮的消息。 显示第一条消息和产品信息:“您想以 xx.xx 美元购买一个订阅吗?
我的老板购买了 Microsoft 365,它包含三种产品。他现在要求我设计一个管理系统,比如员工自助服务门户。我特此寻求有关从哪里开始或使用哪种产品的建议,因为我对此很陌生。 我尝试了一些研究,发现
我的老板购买了 Microsoft 365,它包含三种产品。他现在要求我设计一个管理系统,比如员工自助服务门户。我特此寻求有关从哪里开始或使用哪种产品的建议,因为我对此很陌生。 我尝试了一些研究,发现
我刚刚了解了IAP Cracker的存在,并试图找出在我的应用中验证IAP购买的最佳方法。 我无法确定的是IAP Cracker是否可以处理“消耗性”商品。如果没有,我没有什么可担心的。 这是维护/验
我正在编写一个允许应用内购买的简单应用。我已经使用 SKU 代码 android.test.purchased 进行了测试,一切正常。 我进入我的 google play 控制台,创建了一个应用程序,
我即将启动一个应用程序,该应用程序将包含多个“应用程序内购买”。 我想做的是有一种方法可以提供少量免费的“应用内购买”来选择评论家等人。 在 apple 框架内有没有办法做到这一点,如果没有,我可以采
所以我在这个网站上工作,用户可以在该网站上发布他们的商品,其他用户可以将一些商品添加到他们的购物车并在线购买。 我考虑的流程是这样的: 商家发布商品及其信用卡/ Paypal 信息。 买家将(来自不同
我对这个主题进行了广泛的研究,但我的知识仍然很模糊。我正在寻找一个简单站点的基本 DV,但我看到每个在线 SSL 都具有三个级别, Root->Intermidiate (充当 Root 的代理)和我
我是一名优秀的程序员,十分优秀!