跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 微软说的 cross-platform…开发环境一言难尽
未分類
25 11 月 2020

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

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

資深大佬 : fiveelementgid 4

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

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

也有人问为啥不上 JetBrains 的 Rider

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

因为目前为止还不支持.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

大佬有話說 (52)

  • 資深大佬 : hjc4869

    pkcs12 是标准格式吧… openssl 有支持的

  • 資深大佬 : secondwtq

    PKCS12 是一种格式,不是一种算法 …

  • 資深大佬 : LokiSharp

    https://stackoverflow.com/questions/55485511/how-to-run-dotnet-dev-certs-https-trust

  • 資深大佬 : whywhywhy

    现在刚学 .net ,到处都看到在说不管从什么角度都要转 java,心累,唉。

  • 資深大佬 : aloyuu

    @whywhywhy 已经从 java 转到 C# ,建议不要入 JAVA

  • 資深大佬 : nannanziyu

    1. 你好好问应该怎么做
    自然会回答你。
    2. 你起手就无能吐槽
    那只能跟你说,安装个 pfx 证书搞了一天也没搞定?你改行吧,你解决问题的能力不适合编程

  • 資深大佬 : jiangzm

    典型的拉不出屎来怪厕所不好

  • 資深大佬 : cxe2v

    linux 不就是以可以自由配置而自豪地吗?

  • 資深大佬 : love

    @whywhywhy 是什么支持你要选困难模式呢?千万别说是情怀。。。M$有个啥情怀

  • 資深大佬 : securityCoding

    面向工资编程

  • 主 資深大佬 : fiveelementgid

    @hjc4869 openssl 导出了 cert 和 key,也不知道咋导入…..

    @secondwtq emmm 谢谢(• ▽ •;),有点表述错误

    @LokiSharp 这个我昨天已经试过了,不行,我这是 fedora 33,你看那个最高赞的答案原本是 48,我昨天点赞成的 49…….
    @whywhywhy …..心疼
    @nannanziyu 啊这,稍等,我重新仔细问一遍
    @jiangzm (ꏿ﹏ꏿ;)我错了,我重新问一遍
    @cxe2v 是啊,但是配置不成功就很痛苦了

  • 資深大佬 : nannanziyu

    @love
    因为能挣钱可以吧
    每个 dotnet 的帖子都见你来嘲讽下

  • 資深大佬 : zhuangzhuang1988

    那就用 Java 呗, 反正不要钱

  • 資深大佬 : nannanziyu

    @fiveelementgid
    1. export pfx to pem
    2. Copy the certificate pem to /etc/pki/ca-trust/source/anchors
    3. Then run update-ca-trust

  • 主 資深大佬 : fiveelementgid

    @cxe2v
    @jiangzm
    @nannanziyu
    重新提问:VS Code 的证书存在于.dotnet/corefx/cryptography/x509stores/my/*********.pfx 下,我现在需要将 VSC 中 ASP.NET Core 中的 127.0.0.1 的 CA 证书加入可信任证书。
    openssl pkcs12 -in ~/.dotnet/corefx/cryptography/x509stores/my/***************EA.pfx -out VSC.cert -nodes -nokeys 可以导出 VSC.cert
    openssl pkcs12 -in ~/.dotnet/corefx/cryptography/x509stores/my/01*********0F8EA.pfx -out VSC.key -nodes -nocerts 可以导出 VSC.key
    根据 https://stackoverflow.com/questions/55485511/how-to-run-dotnet-dev-certs-https-trust 所说调整,rpm 系 Linux 应该用`update-ca-trust`进行更新
    根据 man update-ca-trust 文档
    > QUICK HELP 1: To add a certificate in the simple PEM or DER file formats to the list
    of CAs trusted on the system:

    • add it as a new file to directory /etc/pki/ca-trust/source/anchors/

    • run `update-ca-trust extract`

    然后把上面得到的 VSC.cert 导入到 /etc/pki/ca-trust/source/anchors/里面,然后执行`update-ca-trust extract`,进去 127.0.0.1 还是 invalid certificate
    求解决方案

  • 資深大佬 : woahishui

    主不要急,慢慢解决

  • 資深大佬 : nannanziyu

    @fiveelementgid
    不确定,你先判断下是自签名证书信任未生效,还是浏览器没有信任
    你 curl 127.0.0.1 试一下呢

  • 主 資深大佬 : fiveelementgid

    @securityCoding
    @zhuangzhuang1988 暂时不打算 Java,看看被吊打到啥时候吧…..

    @nannanziyu export pfx to pem 我昨天也查了一下,参考了这个 https://www.sslshopper.com/ssl-converter.html,和上一我说的情况操作一样,依旧是无效

  • 資深大佬 : 12101111

    每一个 Linux 管理 openssl 默认密钥的方式都不一样,更何况还有 libressl 和 GNU TLS,这是 Linux 的优点也是缺点, 不会找 Linux 发行版的文档还怪微软没有水晶球不知道你在用哪个 Linux 发行版.

  • 主 資深大佬 : fiveelementgid

    @woahishui 感谢

  • 主 資深大佬 : fiveelementgid

    @12101111 这边是 fedora 33

  • 資深大佬 : no1xsyzy

    先问下你浏览器是? Firefox 的话独立证书管理器不管系统证书的

    你先 curl 看看配置成功了没

  • 主 資深大佬 : fiveelementgid

    @nannanziyu 。。。。。我表述不对吗……就是证书是有的,不过一直无法加入信任列表

    结果是
    output:curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to localhost

    @no1xsyzy 我用的 chrome

  • 資深大佬 : qiufengshe

    主说的太偏激了,即使跨平台开发,一般还是在 Windows 开发好,部署到 Linux 上,C#有好用的 VS 不用,偏去用 VS Code,体验肯定不一样呀!

  • 資深大佬 : LokiSharp

    RHEL 上面是这样的 Fedora 应该也差不多吧

    cp /root/certs/<certname>.cer /etc/pki/ca-trust/source/anchors/
    update-ca-trust extract
    cd /etc/pki/tls/certs/
    openssl x509 -in ca-bundle.crt -text -noout

    https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec-shared-system-certificates
    https://access.redhat.com/solutions/3220561

  • 主 資深大佬 : fiveelementgid

    @qiufengshe emmmmmm,个人观点总不能赖在 VS 和 windows 上吧….CLI 总要学学

    @LokiSharp 谢谢!,我去试试

  • 資深大佬 : Mithril

    @fiveelementgid 那个体验确实是差的非常多。。基本上在 Windows 也没多少人用 VS Code 写 C#的。。

  • 主 資深大佬 : fiveelementgid

    @LokiSharp 依旧没用……裂开

  • 資深大佬 : ladypxy

    微软的文档已经是业界最好的了,没有之一……
    你这都搞不定,真的只能像上面说的,可能不适合这行……

  • 資深大佬 : Jirajine

    换自己的证书啊,开发用 mkcert,部署私有 ca 用 step 。

  • 資深大佬 : beginor

    不用 SSL 也可以玩啊,为啥跟 HTTPS 较劲呢?好像是加个这样的参数就行了

    dotnet new mvc –no-https

  • 主 資深大佬 : fiveelementgid

    @ladypxy 微软的文档我正要喷呢,等我下一个帖子,语法错误和小问题一大把….

    @Jirajine emmmmm,VSC 咋导入证书又是一个问题了

    @beginor 看到了,没有 http 也行,但是部署会出很多其他的问题,顺便说一句 new 创建 MVC Template 模板,MVC 已经被淘汰了

  • 資深大佬 : laminux29

    微软每次 VS 更新最新版的预览版,创建一个空项目,只是 F5 也容易遇到一堆问题。

    这个问题的本质是目前软工规模太太太太太太大了,一个 IDE 的复杂度已经不亚于建造一个小区,各种小 bug 那是太正常不过了,何况是微软缺乏 linux 基因,在 linux 上问题会更多。

  • 主 資深大佬 : fiveelementgid

    @laminux29 兄弟,这是 VSC,还有.net5 在双十一晚上已经发布了稳定版了,在 windows 上没问题

  • 資深大佬 : ericgui

    @laminux29 我大微软还没找到怎么从 linux 上挣钱的办法,找到了,就立刻能超越其他任何公司,做出最牛逼、向后兼容性最牛逼的产品。

  • 資深大佬 : LokiSharp

    @fiveelementgid #28 Emmmm 找到记得方法 @ 我一下,我也打算用 Linux 开发 .net Core 来着,等 RHEL 8 推 .net5 正式版= =貌似目前还是用的预览版

  • 資深大佬 : yexiaoxing

    嘛目前这是个 issue,https://github.com/dotnet/aspnetcore/issues/7246 可以跟踪这个的状态,或者把 openssl 升级到 1.1.1h 。自签也是一个解决方案。

  • 資深大佬 : CismonX

    正好相反,我倒是觉得在 Linux 上面用 VSCode 需要折腾的东西少

  • 主 資深大佬 : fiveelementgid

    @ericgui 吐了,一直在踩雷

    @LokiSharp 解决方案正在尝试下老哥给的 issue.CentOS 8 对标 RHEL 8 吧,我反正用不来 RHEL,内置功能不全,基本瘸腿,我也有 RedHat 的 developer subscribe,上次用了一下 subscribe,redhat 每天疯狂往我邮箱轰炸邮件,全是[Enhancement Advisory] RHEA-2020:5088 Red Hat CodeReady Workspaces 2.5.0 release 这种推销和安全风险警告,安全风险警告源于我用了一些没签名的应用….我吐了

    @yexiaoxing 感谢!!!!我再测试一下

  • 主 資深大佬 : fiveelementgid

    @CismonX 人已经被折腾坏了

    @yexiaoxing 根据 openssl 的工作人员说
    > @drwetter, @chrisvdb, et al.
    Finally, the fix for this issue is merged in both the OpenSSL master branch (to be released as version 3.0 in Q4 of 2020)
    and OpenSSL_1_1_1-stable (to be released with the next letter release, 1.1.1h).

    我这里也是`OpenSSL 1.1.1h FIPS 22 Sep 2020`,自签名根证书再签名应该就行了,我再去测试一下

  • 資深大佬 : coldear

    为什么要在 windows 上开发 linux 系统下运行的.net? 想不通为什么要把大把时间浪费在这些无意义的地方?
    linux 平台运行就用 java 不好吗? 随便找个 linux 下可以用的 IDE ( IntelliJ, Eclipse)
    windows 平台就用 MS 技术栈,.net 加 VS 。

  • 主 資深大佬 : fiveelementgid

    @coldear Linux 下也有 C#和.net 的 IDE 额,JetBrains 家的 Rider 就很不错,看镇图,今年年底应该就完全支持.net5 了,我 VS 玩的还算有点熟?既然.net 5 说了跨平台,我觉得帮忙研究看看这些兼容问题也不算无意义的地方吧,就个人而言,不太喜欢 Java 。而且 CLI 也觉得挺好玩的

  • 主 資深大佬 : fiveelementgid

    @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

    开发.net 还是在 Windows 下(或者 mac )下用 VisualStudio 。跨平台 Rider 也可以。但 VSCode…就算了。IDE,重要的就是 Integrated 。Integrated 保证了 IDE 不像插件化的 VSCode 一样一盘散沙。

  • 資深大佬 : quan01994

    那你可以不用 https 啊,我开发的时候都把 https 去掉了,等到了部署的时候再去考虑 是否要 https 。反正一般我的证书都配置在 nginx 上,如果你说你要提供 grpc 这种,那就开发的时候就要 https 。

  • 主 資深大佬 : fiveelementgid

    @crclz 重点是现在 Rider 还用不了,等年底吧

    @quan01994 反向代理理论上确实只需要反向代理的服务器挂 https,我主要还是用 Apache

  • 資深大佬 : lancelock

    我就用 rider 写,也没啥大问题

  • 主 資深大佬 : fiveelementgid

    @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

    马三立!

  • 資深大佬 : whywhywhy

    @aloyuu 兄弟能细说一点么……目前看主要是说 java 岗位多,热度也够高,全面度也够强。

    @love 别人是这样说的,java 岗位多工资高,C#干私活效率高,爽歪歪……很是迷茫也很是矛盾啊……

  • 資深大佬 : longaiwp

    这不是典型的拉不出屎怪茅坑?配置证书这个跟你用哪个 Linux 发行版就是密切相关的,你是想 MS 把每一个 Linux 发行版的配置方法都写一遍?

  • 主 資深大佬 : fiveelementgid

    @longaiwp 难道不应该吗?也不要求每个发行版都有,但是不应该如同.net5 一样,各大发行版都有安装指南么
    https://docs.microsoft.com/en-us/dotnet/core/install/linux

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具