微软说的 cross-platform...开发环境一言难尽

2020-11-24 19:09:32 +08:00
 fiveelementgid

微软说的 cross-platform,先不说部署的时候一堆奇怪的 bug,这 Linux 下的开发环境的手动配置真是 把人恶心炸了 用的是 Visual Studio Code

也有人问为啥不上 JetBrains 的 Rider

因为目前为止还不支持.net 5,本来就是冲着这个去的,EAP 据说 bug 也很多

Visual Studio Code 主要是做 C#和 ASP.NET Core,问题来了,他这个配置 develop certificate(self-signed)自签名证书。 微软的他推荐的一键命令: dotnet dev-certs https --trust ,但是这个在 VSC For Linux 下根本没用, 微软只有一句话:

See the documentation for your Linux distribution on how to trust the HTTPS development certificate.

微软生成的自签名证书,存在~/dotnet/corefx/cryptography/x509stores/([0-9A-F]+).pfx,查了一下,用 的是微软自己的 pkcs12 算法生成的......搞了一天也没查到去哪里导入..... 欸...开始怀疑自己是不是上错车了,每日骂微软 1/1

5284 次点击
所在节点    程序员
52 条回复
coldear
2020-11-25 02:27:49 +08:00
为什么要在 windows 上开发 linux 系统下运行的.net? 想不通为什么要把大把时间浪费在这些无意义的地方?
linux 平台运行就用 java 不好吗? 随便找个 linux 下可以用的 IDE ( IntelliJ, Eclipse)
windows 平台就用 MS 技术栈,.net 加 VS 。
fiveelementgid
2020-11-25 03:30:27 +08:00
@coldear Linux 下也有 C#和.net 的 IDE 额,JetBrains 家的 Rider 就很不错,看镇楼图,今年年底应该就完全支持.net5 了,我 VS 玩的还算有点熟?既然.net 5 说了跨平台,我觉得帮忙研究看看这些兼容问题也不算无意义的地方吧,就个人而言,不太喜欢 Java 。而且 CLI 也觉得挺好玩的
fiveelementgid
2020-11-25 03:32:59 +08:00
@LokiSharp
@yexiaoxing issue 里面的环境已经可以复现了,我贴在下边,简单来说就是自签名证书无法通过的问题
明天再按照 openssl 的 issue 说的看一下如何解决
睡觉了.....早上还有课,我直接 GG

> curl -v https://localhost:5001/
* Uses proxy env variable no_proxy == '192.168.0.0/16,localhost'
* Trying ::1:5001...
* Connected to localhost (::1) port 5001 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (OUT), TLS alert, unknown CA (560):
* SSL certificate problem: self signed certificate
* Closing connection 0
curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
crclz
2020-11-25 09:15:23 +08:00
开发.net 还是在 Windows 下(或者 mac )下用 VisualStudio 。跨平台 Rider 也可以。但 VSCode...就算了。IDE,重要的就是 Integrated 。Integrated 保证了 IDE 不像插件化的 VSCode 一样一盘散沙。
quan01994
2020-11-25 09:34:00 +08:00
那你可以不用 https 啊,我开发的时候都把 https 去掉了,等到了部署的时候再去考虑 是否要 https 。反正一般我的证书都配置在 nginx 上,如果你说你要提供 grpc 这种,那就开发的时候就要 https 。
fiveelementgid
2020-11-25 09:37:21 +08:00
@crclz 重点是现在 Rider 还用不了,等年底吧

@quan01994 反向代理理论上确实只需要反向代理的服务器挂 https,我主要还是用 Apache
lancelock
2020-11-25 11:33:20 +08:00
我就用 rider 写,也没啥大问题
fiveelementgid
2020-11-25 12:19:26 +08:00
@lancelock emmmmm 我还是等等吧
@yexiaoxing
@LokiSharp
暂时的解决方案
> If you want to trust the certificate, you can add it to your CA certificate store or use it stand-alone as described.
参考:https://curl.se/docs/sslcerts.html
简单来说就 3 个方式:
1.使用--insecure,不验证证书
2.使用--cacert [file],这里的 file 就是上面的--nokeys 导出的,或者设计环境变量 CURL_CA_BUNDLE
3.自己重新编译一份 openssl,因为 CA store 是在编译的时候打包进去的,所以 read only 。

暂时先用环境变量顶着吧

> * Trying ::1:5001...
* Connected to localhost (::1) port 5001 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: x509stores/noprivatekey.pem
CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
* subject: CN=localhost
* start date: Nov 23 13:05:24 2020 GMT
* expire date: Nov 23 13:05:24 2021 GMT
* subjectAltName: host "localhost" matched cert's "localhost"
* issuer: CN=localhost
* SSL certificate verify ok.
charlie21
2020-11-25 13:05:55 +08:00
马三立!
whywhywhy
2020-11-25 17:25:43 +08:00
@aloyuu 兄弟能细说一点么……目前看主要是说 java 岗位多,热度也够高,全面度也够强。

@love 别人是这样说的,java 岗位多工资高,C#干私活效率高,爽歪歪……很是迷茫也很是矛盾啊……
longaiwp
2020-11-26 00:31:58 +08:00
这不是典型的拉不出屎怪茅坑?配置证书这个跟你用哪个 Linux 发行版就是密切相关的,你是想 MS 把每一个 Linux 发行版的配置方法都写一遍?
fiveelementgid
2020-11-26 12:18:24 +08:00
@longaiwp 难道不应该吗?也不要求每个发行版都有,但是不应该如同.net5 一样,各大发行版都有安装指南么
https://docs.microsoft.com/en-us/dotnet/core/install/linux

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

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

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX