bitwarden本地搭建(无需购买SSL证书)
bitwarden本地搭建(无需购买SSL证书)
在安装之前,笔者在这里先声明一下,我安装bitwarden使用的操作环境为ArchLinux,我的想法是,因为这只是一个“密码本”,并且最好能保证其能够在开机后占用尽量少的内存让密码本保持稳定运行。在此前提下,我选择了干净整洁的ArchLinux,关于其安装,大家可以看一下网上现有的教程,或者也可以看一下我的另一篇文章,https://www.cnblogs.com/Thato/articles/18309473
Arch的安装不能说简单,但是也绝对说不上很难。关于完全安装完毕后的占用,我压到了350MB的运行内存占用,如下图,可以说是占用十分的少了

如果你不喜欢用或者不用Arch,也没有关系,本篇文章主要的分享目的是自签SSL证书使用https服务的流程,因为bitwarden强制要求运行在此环境下以保证密码安全,而自签既能剩下一笔资金,也能保证我们能够使用安全的bitwarden服务
那么接下来,是我们安装bitwarden要用到的软件
- VMware虚拟机
- Arch Linux操作系统
- docker
- docker compose
- Nginx => 用于反向代理和加载ssl证书
- 一个能用的代理 => 主要是拉docker镜像用,如果你有好的镜像源,其实这个就无所谓
- 一个清醒的大脑
- 一杯茶或者咖啡
docker与docker-compose的安装
安装docker
docker的安装我们可以直接使用
pacman -S docker
来安装,如下:

此时按下回车确认安装即可;当安装完毕后,我们可以再使用命令开启docker的守护进程并且设置开机自启
systemctl enable --now docker

当出现如上提示时,docker就启动完毕且添加开机自启了;检查一下docker服务是否正常,运行命令
docker version

当docker如上显示出Client和Server的信息后,说明docker安装设置完毕。
安装docker-compose
对于Arch来说,docker-compose可以直接使用pacman来安装,运行命令
pacman -S docker-compose

安装完成后执行命令
docker-compose version

当能够成功返回版本信息时,说明docker-compose也安装完毕了
bitwarden的安装
我这里使用了一个第三方的bitwarden的docker镜像,听别人说有解锁一些专业版的东西,这里就拿来用了。
加速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服务不可用,只是检查是否能够正常访问)
注意:此时bitwarden服务并不可用,只是检查是否能够正常访问
随后我们去访问一下web页面,看看是否有异常;访问之前需要知道我们的虚拟机ip地址。这里可以安装一个net-tools,运行命令
pacman -S net-tools #当然,你也可以使用ip a命令来查看ip地址

安装完成之后就可以使用ifconfig了,我们使用ifconfig来看一下ip地址

可以看到我的ip地址是192.168.131.151,并且启容器的时候我们是把docker的80端口映射到了Arch的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反向代理配置https
现在我们有了证书了,该如何使用呢?难不成进到容器里面替换吗
其实完全不用,我们只要配置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
我们来试试访问我们的bitwarden,此时我们已经配置好了https,此时访问https://xxx.xxx.xxx.xxx(你的服务器ip地址)即可

浏览器爆如上错误直接继续访问,此处的“不安全”原因上面已经强调过,不再赘述

可以看到此时成功进入网页了,那么我们开始使用吧。
创建一个新账户,点击创建账号

这里根据提示填写即可,主密码就是登录进bitwarden的密码,请一定牢记账号和密码

注册完毕即可登录

此时,你的bitwarden就搭建完毕了,关于bitwarden的使用,大家可以自行探索。
恭喜你走到了这一步!
bitwarden本地搭建(无需购买SSL证书)的更多相关文章
- 购买SSL证书到部署网站遇到的若干问题
作为一个菜鸟,对于SSL证书,我了解不多,只知道用了它网站更安全,所以这次使用SSL证书途中遇到了各方面的各种问题,到今天为止终于全部解决. 一.证书格式 前两天在那什么云上面买了个SSL证书,是Wo ...
- 阿里云免费购买SSL证书,nginx无缝升级https
最近在升级交流学习社区,觉得有必要升级成https.以下是自己在升级中记录. 以下包括以下部分: 一.阿里云免费购买SSL证书 1.自己在阿里云申请了免费的,然后自己支付0元,购买了SSL证书 2.我 ...
- 在阿里云购买SSL证书,让网站支持HTTPS
SSL简介 引自:https://baike.baidu.com/item/ssl/320778?fr=aladdin SSL SSL(Secure Sockets Layer 安全套接层),及其继任 ...
- centos搭建免费的ssl证书,大部分浏览器均支持!(let’s encrypt 的使用记录)
安装certbot wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto 然后就是通过这个脚本获取证书,安装前先将NGINX 停一下. ...
- 八大免费SSL证书-给你的网站免费添加Https安全加密
评论» https://www.freehao123.com/top-8-free-ssl-cert/ 文章目录 Let's Encrypt StartSSL SSL CloudFlare SSL ...
- 十大免费SSL证书:网站免费添加HTTPS加密
SSL证书,用于加密HTTP协议,也就是HTTPS.随着淘宝.百度等网站纷纷实现全站Https加密访问,搜索引擎对于Https更加友好,加上互联网上越来越多的人重视隐私安全,站长们给网站添加SSL证书 ...
- linux nginx 配置ssl证书访问
http://www.linuxidc.com/Linux/2013-08/88271.htm 一.什么是 SSL 证书,什么是 HTTPSSSL 证书是一种数字证书,它使用 Secure Socke ...
- Aliyun SSL 证书签发&安装
目录 HTTPS SSL证书 签发 和 应用 证书购买 证书申请 证书安装 参考文档 HTTPS SSL证书 签发 和 应用 - SSL证书服务(Alibaba Cloud SSL Certifica ...
- nginx 使用ssl证书配置https协议
如果能给你带来帮助,不胜荣幸,如果有错误也请批评指正,共同学习,共同进步. 第一,需要去申请或者购买ssl证书(这步略过,因为开发过程中没有给我提供证书和域名,只有ip地址),我从网上找了一份如何申请 ...
- Nginx配置SSL证书部署HTTPS网站
1.购买ssl证书 购买网站:沃通 2.上传证书到nginx服务器,然后进行解压. 解压后的的效果: [root@bubidev-ng3 nginx]# pwd/etc/nginx [root@bub ...
随机推荐
- pwn杂项之linux命令执行
通常pwn题目,时常会考到对Linux命令的一些使用,比如当cat被禁用的时候,可以使用tac,或者别的命令代替 下面是buu上的应该题目,考察的就是对liunx命令的理解,以及对程序的分析. 题目地 ...
- ubuntu下openCV-Haar特征分类器训练
ubuntu下openCV-Haar特征分类器训练 这段时间在学openCV,准备做一个头部检测,但是openCV自带的分类器只有人脸检测的,而且准确度不高,就准备自己训练一个分类器.在网上看了很多的 ...
- 阅读LXH《FFMPEG+SDL的视频播放器》总结
一.原文地址 https://blog.csdn.net/leixiaohua1020/article/details/46889389 在此向雷霄骅致敬!!! 二.视频播放器实现思路 1)视频播放器 ...
- 初识c语言—c语言的初步认识和一个简单的程序
C语言是什么 编程语言(编程语言是控制计算机的一系列指令,他又固定的格式和词汇.同时也叫计算机语言(计算机语言是,人和计算机通讯的语言)) C语言的特点 语言简洁,紧凑,使用方便 运算符丰富 数据类型 ...
- 2024-06-05:用go语言,给定三个正整数 n、x 和 y, 描述一个城市中由 n 个房屋和 n 条街道连接的情况。 城市中存在一条额外的街道连接房屋 x 和房屋 y。 需要计算对于每个街道数(
2024-06-05:用go语言,给定三个正整数 n.x 和 y, 描述一个城市中由 n 个房屋和 n 条街道连接的情况. 城市中存在一条额外的街道连接房屋 x 和房屋 y. 需要计算对于每个街道数( ...
- LeetCode 207. Course Schedule 课程表 (C++/Java)
题目: There are a total of n courses you have to take, labeled from 0 to n-1. Some courses may have pr ...
- kettle从入门到精通 第四十二课 kettle 1对多表拆分同步
1.在有的业务场景中,会涉及一对多表拆分同步的业务场景,也就是说原表是一张表,将原表字段进行拆分放入目标库中的多张表,如下面的示例将表student_third中的数据 同步到student.teac ...
- CSPJ赛前刷题
T1 \(\color{red}\text{正难则反}\),最短路 T2 图论(糅杂着一点DP) T3 DP 优化:减去不需要的状态 T4 一定要写注释!!! 不开longlong见祖宗!!! T5 ...
- invalid comparison: java.util.ArrayList and java.lang.String 异常分析及解决方法
nvalid comparison: java.util.ArrayList and java.lang.String 异常解决方法异常原因首先我们可以确定是在mybatis的xml中的 list 操 ...
- String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的
a.可变性:String类中使用字符数组保存字符串,private final char value[],所以string对象是不可变的.StringBuilder与StringBuffer ...