附 win10 Emby Server 4.6.4
成功图:
以下为旧内容,可为参考
分析
搭建伪站
一些准备
你只需要一个能访问的 Web 服务器就行,本文使用 Nginx
一个装有 OpenSSL 的设备,当然你也可以不用
Emby 客户端,其实这个你不要也可以 (逃
建立一个站点
新建一个域名为 mb3admin.com
的站点就行,
你的服务端,客户端都要能够正常访问伪站。
然后只需要配置伪静态。Apache 服务器请自行寻找相关资料,目的就是直接让 Nginx 返回我们需要的 JSON
这里我提供我写的伪静态,如果你有更好的...
location /admin/service/registration/validateDevice {
default_type application/json;
return 200 '{"cacheExpirationDays": 7,"message": "Device Valid","resultCode": "GOOD"}';
}
location /admin/service/registration/validate {
default_type application/json;
return 200 '{"featId":"","registered":true,"expDate":"2099-01-01","key":""}';
}
location /admin/service/registration/getStatus {
default_type application/json;
return 200 '{"deviceStatus":"","planType":"","subscriptions":{}}';
}
保存后,到浏览器内测试访问一下 https://mb3admin.com/admin/service/registration/validateDevice
正常返回我们要的 json 即成功。
签发证书
这里我会详细介绍如何签发自己的证书,当然你可以跳过这一步,直接到文件末尾下载我生成好的证书。
这里我提供三种方法,前一种是自己动手,第二种是超级省事,翻到文章末尾是粘贴复制 (逃
使用 OpenSSL 进行签发
生成 CA 请求并签名
使用命令:
openssl req -x509 -new -nodes -key ca.key -days 3650 -subj "/C=JP/ST=Japan/L=Japan/O=Emby/CN=mb3admin.com" -out ca.pem
一步到位。
这样就会在当前路径下签出一张 CA 证书与 CA 密钥,如果懂一点点的话可以按需要修改其中的参数。
请求服务器证书
使用命令 openssl req -newkey rsa:2048 -days 824 -nodes -keyout ssl.key -subj "/C=JP/ST=Japan/L=Japan/O=Emby/CN=mb3admin.com" -out ssl.csr
然后
构建 CA 机构结构
使用命令 mkdir -p /etc/pki/CA;mkdir -p /etc/pki/CA/newcerts;touch /etc/pki/CA/index.txt;mkdir /etc/pki/CA/private;echo 01 > /etc/pki/CA/serial
即可一键构建好 CA 机构,然后将 CA 的证书和密钥添加到机构中:
cp ca.pem /etc/pki/CA/cacert.pem;cp ca.key /etc/pki/CA/private/cakey.pem
自定义证书用途
此时如果直接签发,会发现不仅没有 DNS 备选名称而且证书用途是无这样会导致 Chrome 以及大部分现代浏览器不信任。
新建一个 http.ext
文件,里头写上:
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName
[ SubjectAlternativeName ]
DNS.1=mb3admin.com
DNS.2=*.mb3admin.com
签发证书!
执行 openssl ca -extfile http.ext -in ssl.csr -out ssl.pem
回答两个 y
即可发现当前目录下已经签出了 ssl.pem
使用网上的工具一键签发
因为对 OpenSSL 了解不深,一些自定义项根本不知道写啥,为此搜索了一圈,发现了这个宝藏站点: 国密线上证书签发
打开后,按照这样填写:
一个是加密算法选 RSA, 密钥长度至少选 2048, 然后除主题名称要按我这个写之外其他的按照规则随意填写。点开高级选项:
主题备用名称照我这样填写,记得 DNS
与数字直接有一个 .
。按照图这样勾选两处用途。然后勾选 自动包含CA证书链
,最后是证书有效天数,写 824
天即可。
配置证书
在 Web 服务器中为站点部署好 ssl.key
与 ssl.pem
作为密钥与 SSL 证书即可。如果是国密生成出来的就是 mb3admin.com.key.pem
和 mb3admin.com.cert.pem
。
国密证书请下载刚刚生成页面中提到的根证书也可以前往本文最后获取国密的 CA 证书,然后按照下面的方法使用。如果你是 OpenSSL 命令生成的:
把 ca.pem 中的内容写入到本地计算机新建的一个 ca.crt 文件中,双击打开:
选择安装证书,根据需求选择安装位置,然后第三步,
选择 将所有证书都放入下列存储
,单击浏览,选择 受信任的根证书颁发机构
然后下一步下一步
导入完成后,我们在浏览器中访问 https://mb3admin.com/admin/service/registration/666
It's works!
如果还是报错,尝试重启浏览器,清理缓存等步骤。
添加头部
Nginx 服务器请直接在网站的配置文件中加入:
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers *;
add_header Access-Control-Allow-Method *;
add_header Access-Control-Allow-Credentials true;
避免部分地方有跨域的问题。
尝试一下
打开 Emby Windows 客户端,
能使用下载到功能,并且能直接修改主题
并且播放也正常。iOS 设备也全部正常!
在 Linux 下配置证书
经测试,共两处需要配置
/opt/emby-server/etc/ssl/certs/ca-certificates.crt
/etc/pki/tls/certs/ca-bundle.crt
第一处是 emby 的 c# 环境自带的信任列表,这个我找了很久。第二处是 linux 系统的信任列表。本来是没打算写的,因为在我服务器上修改系统的信任列表直接可用 (CentOS8) 但是多方测试发现在 CentOS7 下会出现证书信任问题,但是 curl 可以正常请求。就考虑到是 C# 类似 java 一样,本身有信任列表。
在 emby 的目录翻找,运气好找到了这个文件。只需要把根证书添加在结尾即可。
Windows 下可以不用管,是直接跟系统信任的。
为什么是 824 天?
可能有人注意到了,为什么服务器证书只能写 824 天?
这里要感谢 V2ex 的网友。之前证书在 Windows 完全正常,但是在 iOS 设备上就是提示非私人链接,逐询问万能的网友。这里了解了一份苹果官方文件感兴趣的可以点开看看,对证书做了一些要求,故保全,使用 825-1 天。
相关文件
国密 CA 证书
-----BEGIN CERTIFICATE-----
MIIDsDCCApigAwIBAgIJAMjrH5w5KmnFMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNV
BAYTAkNOMRAwDgYDVQQIDAdCZWlqaW5nMRAwDgYDVQQHDAdIYWlEaWFuMRMwEQYD
VQQKDApHTUNlcnQub3JnMSAwHgYDVQQDDBdHTUNlcnQgUlNBIFJvb3QgQ0EgLSAw
MTAeFw0xOTEwMjQxMjM3NDRaFw0zOTA3MTExMjM3NDRaMGgxCzAJBgNVBAYTAkNO
MRAwDgYDVQQIDAdCZWlqaW5nMRAwDgYDVQQHDAdIYWlEaWFuMRMwEQYDVQQKDApH
TUNlcnQub3JnMSAwHgYDVQQDDBdHTUNlcnQgUlNBIFJvb3QgQ0EgLSAwMTCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANCpZk/j4CIM2o2IiZHTsQA10LTN
fD/dV//kyn9QXQwpRpcgTLuYassucaDSvkS56+p7jRKMgD9ZnE4QNf3Ay/UEACYG
UH7OubZtigxJpLjS69dHfy3yqt8GSOKsfFu6VZ//QphFGw4NkkCYngOuxhmV7WU0
xNasollGGuzjBmp46/bev8aomkI33OxSXWna3oCn3BSScgkoyWJTNN1+EwCZANO3
FeKUyPMGOhi49QlV4OyUgCfGlFqhAGZAT/PMo8oPwwmyHrlyn+jqin7+qKVF9loc
Nle9YyBi7eZkDbSoAUOg2WFaDDRrPhUnNU+l2TqCP+uCgyxU74Lphj00v00CAwEA
AaNdMFswHQYDVR0OBBYEFJon65yAk8sN6cM90Wp6HOKxnzjpMB8GA1UdIwQYMBaA
FJon65yAk8sN6cM90Wp6HOKxnzjpMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEG
MA0GCSqGSIb3DQEBCwUAA4IBAQBcoJlabv5wgUj6tgbb3gUVYHKlQWr2aaPWg1Vs
ru5ExyPcEhyQ2XM5AdnOMjKiTikyPYwk1/K1tJSNN5AmCfdofWr4m074s+Rf/i+h
dBuh2vjZee9L/NV2ZRcxpwp9e561+JBXoHvZ0JHDBGQ0WYsJ+m9fRxCR12oIVWWv
SAjbyetRRO+oTvi3dX2OQUgJhflS4/cxQblYxgL5nMIa+MVamXUNNfwEk3TZh4K/
NgtQY5KraEUU7bCkbbKdX2r+njobTQpbBV8uZ/JwsNghx4gfB+3QrteVfceQ+ip+
CpEU9X3JD9WkxEVFKBa0Q+TllSny07of0cWmRuwZlLUruBJD
-----END CERTIFICATE-----
有效期至 2022-4-27 日的证书
-----BEGIN CERTIFICATE-----
MIIEJjCCAw6gAwIBAgIJAL0OjFdDMG1wMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNV
BAYTAkNOMRAwDgYDVQQIDAdCZWlqaW5nMRAwDgYDVQQHDAdIYWlEaWFuMRMwEQYD
VQQKDApHTUNlcnQub3JnMSAwHgYDVQQDDBdHTUNlcnQgUlNBIFJvb3QgQ0EgLSAw
MTAeFw0yMDAxMTkwMjM4MTZaFw0yMjA0MjIwMjM4MTZaMGYxCzAJBgNVBAYTAlVT
MRAwDgYDVQQIDAdOZXdZb3JrMRAwDgYDVQQHDAdOZXdZb3JrMQ0wCwYDVQQKDARF
bWJ5MQ0wCwYDVQQLDARFbWJ5MRUwEwYDVQQDDAxtYjNhZG1pbi5jb20wggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDL6gFZqwRuFBWNyoKUhJg1x5XedQ6Q
Z9sF6Yaw08o8Ggsa9bz6cz7wdrAGZy6DBrBjpgakXoeuISokXBTKb4qvDA3khXzJ
saqTI48tgSP5eNklvW33Fc2Cib4dh70IyS6coEbMkVcGQ+wvmh9gzU5puvoKeJMj
bt8ENGumuxeyJjss7KwzytJxrUO25cbLb7g4ai93f/08rsumbO4WSs/SD8jA2zs1
iHqYnRfdBEQfWqxquyp7npKTa6ahRDeV8FsE/iXod9OEcauNaQiFOUI1lq7aRniA
9Wuyn329OY7cOiqlVVL9COAm5qx42jOg4EnoblrzDXBk+9TkNuMjpVPdAgMBAAGj
gdQwgdEwDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0lBBYwFAYIKwYB
BQUHAwEGCCsGAQUFBwMCMCwGCWCGSAGG+EIBDQQfFh1HTUNlcnQub3JnIFNpZ25l
ZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUcWmpD/64Jwv/b0MXdNG8Sr50NFAwHwYD
VR0jBBgwFoAUmifrnICTyw3pwz3Ranoc4rGfOOkwJwYDVR0RBCAwHoIMbWIzYWRt
aW4uY29tgg4qLm1iM2FkbWluLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAbvBR5CLd
AhoLh2J1P1Jo5Z/rSXoWTmNZ/652NZFe52FTwsSmQNN2+5F01Dm2QL4t5en8tzrB
klfFpWVvAj4McZBWh2J3zyFTeEbvPacEkljsYvYA7I0saYhcvusyZ5ATATxi0GB9
e9WrtWJ6gt5Beb9E3VhNi/V65pvYxImfUN0z9EKNgz8ZQXNZvgTnUOY63iGEoGhq
YuxAFU9ddOEacrCGxwSZNT6rxX9EPyqQ53lI2iAuE7GTQkO1n4WqoZ07f+1z2JHP
VoLvrXmuELAweXfyxJ8qp3L0AjB+FYmjOUCLWoNkRrWyRioW2WXtei58kpnp+mfB
bOt7M57SS/HV9Q==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDsDCCApigAwIBAgIJAMjrH5w5KmnFMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNV
BAYTAkNOMRAwDgYDVQQIDAdCZWlqaW5nMRAwDgYDVQQHDAdIYWlEaWFuMRMwEQYD
VQQKDApHTUNlcnQub3JnMSAwHgYDVQQDDBdHTUNlcnQgUlNBIFJvb3QgQ0EgLSAw
MTAeFw0xOTEwMjQxMjM3NDRaFw0zOTA3MTExMjM3NDRaMGgxCzAJBgNVBAYTAkNO
MRAwDgYDVQQIDAdCZWlqaW5nMRAwDgYDVQQHDAdIYWlEaWFuMRMwEQYDVQQKDApH
TUNlcnQub3JnMSAwHgYDVQQDDBdHTUNlcnQgUlNBIFJvb3QgQ0EgLSAwMTCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANCpZk/j4CIM2o2IiZHTsQA10LTN
fD/dV//kyn9QXQwpRpcgTLuYassucaDSvkS56+p7jRKMgD9ZnE4QNf3Ay/UEACYG
UH7OubZtigxJpLjS69dHfy3yqt8GSOKsfFu6VZ//QphFGw4NkkCYngOuxhmV7WU0
xNasollGGuzjBmp46/bev8aomkI33OxSXWna3oCn3BSScgkoyWJTNN1+EwCZANO3
FeKUyPMGOhi49QlV4OyUgCfGlFqhAGZAT/PMo8oPwwmyHrlyn+jqin7+qKVF9loc
Nle9YyBi7eZkDbSoAUOg2WFaDDRrPhUnNU+l2TqCP+uCgyxU74Lphj00v00CAwEA
AaNdMFswHQYDVR0OBBYEFJon65yAk8sN6cM90Wp6HOKxnzjpMB8GA1UdIwQYMBaA
FJon65yAk8sN6cM90Wp6HOKxnzjpMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEG
MA0GCSqGSIb3DQEBCwUAA4IBAQBcoJlabv5wgUj6tgbb3gUVYHKlQWr2aaPWg1Vs
ru5ExyPcEhyQ2XM5AdnOMjKiTikyPYwk1/K1tJSNN5AmCfdofWr4m074s+Rf/i+h
dBuh2vjZee9L/NV2ZRcxpwp9e561+JBXoHvZ0JHDBGQ0WYsJ+m9fRxCR12oIVWWv
SAjbyetRRO+oTvi3dX2OQUgJhflS4/cxQblYxgL5nMIa+MVamXUNNfwEk3TZh4K/
NgtQY5KraEUU7bCkbbKdX2r+njobTQpbBV8uZ/JwsNghx4gfB+3QrteVfceQ+ip+
CpEU9X3JD9WkxEVFKBa0Q+TllSny07of0cWmRuwZlLUruBJD
-----END CERTIFICATE-----
对应密钥
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAy+oBWasEbhQVjcqClISYNceV3nUOkGfbBemGsNPKPBoLGvW8
+nM+8HawBmcugwawY6YGpF6HriEqJFwUym+KrwwN5IV8ybGqkyOPLYEj+XjZJb1t
9xXNgom+HYe9CMkunKBGzJFXBkPsL5ofYM1Oabr6CniTI27fBDRrprsXsiY7LOys
M8rSca1DtuXGy2+4OGovd3/9PK7LpmzuFkrP0g/IwNs7NYh6mJ0X3QREH1qsarsq
e56Sk2umoUQ3lfBbBP4l6HfThHGrjWkIhTlCNZau2kZ4gPVrsp99vTmO3DoqpVVS
/QjgJuaseNozoOBJ6G5a8w1wZPvU5DbjI6VT3QIDAQABAoIBAQCQm2ZRvKHrnnqa
jx6DTHTUzrFNjR3C8qO0UaOfCtLERIPTnqlhwxDDXqf+InYtnTTBth/HuPHnXsWP
+20TEn77HEVN5gxUzJX2uqTy1D460KTNysSNEP0osZ4NOxGnhWR01oTe1cMtQkXg
jB/seiw9dseTXWabHikxxisBlnR7dLQ3jn9Wrb4ynSW8IdebUxOl9+jCJpSwZ3zE
TmPiLamOQYiVHBwROI/0ooXi8XgcfHZ5k0o7CaYYGJBMvePTUPA0B7eCM7FJnlpn
pKi4Z7nllhn+1GOEnCcY+BNymrugSPfFF9amOdsZWODlf1s4aX6nmY1FFcoROqKw
UKq3QBvRAoGBAPdMxXJqwFt4PgFL06k9c/A91/UsCWLN9nS6EIvTyjGIPVm/cAe3
a8qm/jTuqJnYQjnUC1sVgF/Gl+fTMLEJR3GH0Ht/P1U142Q8BstNdphC3NrhQQZQ
O1PWoBmY61J4LNY3L/yF25BC2l3HeyyMTs5tdNYSbAMhk2hBU/tnzsJPAoGBANMW
fk5E+EhlF0IaTPHVwHltAyzdi38u9LmnW8mzdNquUahone+2UICLZX+7Iprum7mn
y+zYEppYUx1+vvAwwahavc6qpARCcI5c6X848p3jkTlGV/I9a2/8FQDNhzNc3bdp
oZrHMpe47gs8tKpeBZ9ul1BQhMnqvmWoWqMfspgTAoGAWPhbyNAzKDVYSWsYWTjs
ry/wtBoFvnBPDKusLEIj6jITsGg5S+1ncF8n8a8zJTYyjU+GTlyr9Mkj+Zl3WRn3
hBbSoLuk82kRyAv4fcf+tMTJZE3J8RWIYp9CtjLX5rGpn9/2+ajG113V5gtQezR3
XbjvYdz60x2PRODL8BTmw+0CgYAoFYRknoo7TR8OiWoFHl8Pb9kDgwqDW0pTmuk+
MxrEkAenoD4lkAxXbKEYkVOv8hGWPrvlvN5DevRFjJT7jXao3ppejV7aBDfVgOVC
KHFB9D3Wj3oR4QHu4QKoBV9gLIlZ0/BBMQR1dUOW1K9GDtaogNqxAKlGopIHQeH8
Sf+jCwKBgFAchqkHN46JPnMu2yogPVPC6loIL2TVxHpD4SUIpB8M6fL82F8pyXJD
bLHYF5DtOIBJ/vB3IiDkgw4SBCROTFyYNiC+Y3ZV4Xd6abCy9q+uB70j125zF7l/
uWuf0rneucrmFfMd14+Gjgd+jfYlLOp8D9vwQHJQ8UEVlnA9Sarl
-----END RSA PRIVATE KEY-----
怎么收藏这篇文章?
博主真是太厉害了!!!
来学习学习
Gxfenx
6.66666666666667e+19
多谢分享
谢谢分享,我试试看
学习一下 感谢分享!
所以域名重定向是重定向到哪个ip呢?
我来学习一下了
支持一下
aaaaa
aaaaaaaaaaaaa
感谢分享
。。。。
感谢分享,试试看
学习一下试试
一直在找这个
回复看看好文章
看看,学习下